Gabor Grothendieck wrote: > On 5/22/06, Martin Maechler <[EMAIL PROTECTED]> wrote: > >>>>>>>"TL" == Thomas Lumley <[EMAIL PROTECTED]> >>>>>>> on Mon, 22 May 2006 07:09:09 -0700 (PDT) writes: >> >> TL> On Mon, 22 May 2006, Gabor Grothendieck wrote: >> >> Due to lazy evaluation, I don't think a and b are fully evaluated: >> >> >> >>> ifelse(1, a <- 1, b <- 2) >> >> [1] 1 >> >>> a >> >> [1] 1 >> >>> b >> >> Error: object "b" not found >> >> TL> yes. If you look at the code for ifelse() it evaluates >> TL> the second argument if any test values are TRUE and the >> TL> third argument if any test values are FALSE, so in the >> TL> scalar case it does not evaluate both arguments. >> >>yes. >>And (Gabor), if you recall what I said earlier, it's pretty clear >>that I would not even *consider* using ifelse() in the scalar >>case. So my original statement was about the case ifelse() is >>designed for: The non-trivial vector case, and there my >>statement of "fully evaluated" does apply. >> >>Martin >> > > > I don't think they are fully evaluated in the vector case either: > > >>ifelse(rep(TRUE,4), a <- 1:4, b <- 1:4) > > [1] 1 2 3 4 > >>a > > [1] 1 2 3 4 > >>b > > Error: object "b" not found
Martin's "non-trivial" means not all conditions are TRUE or not all are FALSE, then both statements are FULLY evaluated and he is right. See the ifelse() code which is not that hard to read... Uwe > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
