[R] odd feature

Uwe Ligges ligges at statistik.uni-dortmund.de
Mon May 22 17:45:32 CEST 2006


Gabor Grothendieck wrote:

> On 5/22/06, Martin Maechler <maechler at stat.math.ethz.ch> wrote:
> 
>>>>>>>"TL" == Thomas Lumley <tlumley at u.washington.edu>
>>>>>>>    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



> ______________________________________________
> R-help at 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



More information about the R-help mailing list