[R] if syntax

Uwe Ligges ligges at statistik.uni-dortmund.de
Sun Jun 20 18:32:23 CEST 2004


ivo_welch-Rstat at mailblocks.com wrote:

> 
> I ran into an interesting oddity of R,
>    if (0) { print(1); }
>    else  { print(2); }

In both cases the ";" is superflously .....


If if(){}else{} is within an expression (e.g. a function's body), both 
ways work.
Do you really want to use it outside a function's body? If so, I suggest 
to write:

if(...){
     ...
} else{
     ...
}



> is a syntax error, while
>    if (0) { print(1); } else  { print(2); }
> or
>    if (0) { print(1);
>    } else  { print(2); }
>  is not.  I presume it has to do with the duality of the newline 
> functioning as an end of command (;) character, though it still seems a 
> bit odd, and it took me a while to figure out what was wrong.  I 
> eventually figured out that to resolve this ambiguity, I would guess 
> that ifelse() would be a preferred function.

No. ifelse() is for the vectorized conditions. if(){} else{} is more 
efficient for length 1 conditions. Please read help("if") and 
help("ifelse").


> I wanted to look up the internal R documentation for if via "?if", but 
> this does not work.  making the latter work would be a good idea.

?"if" or help("if") do work perfectly.

Uwe Ligges


> regards,  /iaw
> ---
> ivo welch
> professor of finance and economics
> brown / nber / yale
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html




More information about the R-help mailing list