[R] syntax rules

Liaw, Andy andy_liaw at merck.com
Tue Feb 25 16:32:03 CET 2003


> From: Hiroyuki Kawakatsu [mailto:kawa at aris.ss.uci.edu]
> 
> hi,
> 
> i lost half a day trying to figure out how r is parsing statements
> in multiple lines. can someone explain (or direct me to 
> documentation) the
> following. consider the following statements in a program file, say
> foo.r:
> 
> a <- 1 +
>  2;
> b <- {1
>  + 2};

The first line is not a complete statement because there's no enclosing }.
Thus b gets assign the value of the statement enclosed in {}.

> {c <- 1
>  + 2};

The first line here *is* a complete statement.  The entire { } expression
gets the value of the the last line, namely "+2".  Try:

> junk <- { b <- 1
+ + 2};
> b
[1] 1
> junk
[1] 2

Andy


> d <- c(1,
>  2);
> 
> if i do source("foo.r"), i get a=3, b=2, c=1, d={1,2}.
> according to the r language definition p.11, section 3.2, it says
> 
> "A semicolon always indicates the end of a statement while a new line
> 'may' indicate the end of a statement. If the current statement is not
> syntactically complete new lines are simply ignored by the evaluator."
> 
> then, a and d are evaluated as expected since the first lines are not
> syntactically complete. however, why does b evaluate to 2 and c to 1?
> (it appears to evaluate differently if i do this interactively.)
> i got the idea of using curly braces from p.12 of the 
> language definition.
> 
> is there a way to keep adding terms with a line beginning 
> with a plus sign
> (notationally, i don't like plus symbols hanging at the end 
> of a line...)?
> 
> h.
> --------------------------------------------------------------------
> Time series regression studies give no sign of converging toward the
> truth. (Phillip Cagan)
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> http://www.stat.math.ethz.ch/mailman/listinfo/r-help
> 


------------------------------------------------------------------------------




More information about the R-help mailing list