>>>>> "DW" == David Winsemius <dwinsem...@comcast.net> >>>>> on Sat, 3 Oct 2009 12:56:51 -0400 writes:
DW> On Oct 3, 2009, at 11:54 AM, Chen Gu wrote: >> Hello, >> >> I am doing a simple if else statement in R. But it always comes out >> error >> such as 'unexpected error' >> There are two variables. ini and b. when ini=1, a=3; when ini>1 and b> 2, >> a=5; all other situations, a=6. I don't know where it is wrong. >> Here is my code >> >> ini=3 >> b=4 DW> Your basic problem is that you are confusing if and else which are DW> program control functions with ifelse which is designed for assignment DW> purposes; David, not quite: in R, "everything"(*) is a function, and in the example we have here (and innumerous similar examples) ifelse(.) is not efficient to use: >> ini=3 >> b=4 >> a <- ifelse( ini==1, 3, ifelse( ini>1 & b>2 , 5, 6)) >> >> a > [1] 5 More efficient -- and also nicer in my eyes --- is a <- if(ini == 1) 3 else if(ini > 1 && b > 2) 5 else 6 As I say on many occasions: ifelse() is useful and nice, but it is used in many more places than it should.... {BTW, not only because of examples like the above}. Martin Maechler, ETH Zurich ---- (*) "almost" >> if (ini==1) { >> a=3 >> } >> else if (ini>1 and b>2 ) { DW> The error is probably being thrown because "and" is not a valid DW> conjunction operator in R. >> 1 and 1 DW> Error: syntax error >> 1 & 1 DW> [1] TRUE >> a=5 >> } >> else {a=6} >> >> e. DW> David Winsemius, MD DW> Heritage Laboratories DW> West Hartford, CT DW> ______________________________________________ DW> R-help@r-project.org mailing list DW> https://stat.ethz.ch/mailman/listinfo/r-help DW> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html DW> and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.