On 3/6/2007 12:15 PM, [EMAIL PROTECTED] wrote:
> Full_Name: Stephanie MAHEVAS
> Version: 2.4.1
> OS: Windows NT
> Submission from: (NULL) (134.246.55.50)
> 
> 
> 
> the two following instructions provide a synthax  error :
> 
> if ( 5 > 4 ) cat("ok1")
> else cat("ok2")
> 
> and
> 
> if ( 5 > 4 ){ cat("ok1")}
> else cat("ok2")
> 
> whereas these ones don't
> 
> if ( 5 > 4 ) cat("ok1") else cat("ok2")
> 
> and
> 
> if ( 5 > 4 ){ cat("ok1")
> }else cat("ok2")
> 
> It looks like a parser problem. If else is not on the same line as if or if 
> the
> end of block statement of if } is not paste to else, else does not seem linked
> with if

This is a documented "feature" of the language, not a bug.  (See the 
language guide, section 3.2.1 "if", around the 4th paragraph.)

It arises because R tries to evaluate a statement as soon as it is 
complete, and

if ( 5 > 4 ) cat("ok1")

is a complete statement.  You can get the behaviour you want by wrapping 
the whole think in curly brackets so that R doesn't start evaluating too 
early, e.g.

 > {
+  if ( 5 > 4 ) cat("ok1")
+  else cat("ok2")
+ }
ok1>

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to