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 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html