[R] odd feature

Martin Maechler maechler at stat.math.ethz.ch
Mon May 22 09:26:32 CEST 2006


>>>>> "Gabor" == Gabor Grothendieck <ggrothendieck at gmail.com>
>>>>>     on Sun, 21 May 2006 09:47:07 -0400 writes:

    Gabor> If you know that test is a scalar

    Gabor> result <- if (test) a else b

    Gabor> will do it.  

Yes, indeed!
IMO,  ifelse(test, a, b) is much overused where as  
      if(test) a else b  is much UNDER used.

>From some e-mail postings, and even some documents (even printed
books?), I get the impression that too many people think that
 ifelse(.,.,.)  is to be used as expression / function and 
  if(.) . else . only for "program flow control".
This leads to quite suboptimal code, and I personally use
if(.) . else .  __as expression__ much more frequently than ifelse(.,.,.)
 
Martin Maechler, ETH Zurich.

    Gabor> Here is another approach:

    Gabor> as.vector(test * ts(a) + (!test) * ts(b))



    Gabor> On 5/21/06, ivo welch <ivowel at gmail.com> wrote:
    >> Dear R wizards:
    >> 
    >> I just got stung by the ifelse() feature.
    >> 
    >> > a <- 10:15
    >> > b <- 20:300
    >> > test <- 1
    >> > ifelse(test,a,b)
    >> [1] 10
    >> 
    >> I had not realized that this was the default behavior---I had expected
    >> 10:15.  mea culpa.  however, I wonder whether it would make sense to
    >> replace ifelse with a different semantic, where if test is a single
    >> scalar, it means what a stupid user like me would imagine.
    >> 
    >> Aside, I like the flexibility of R, but I am not thrilled by all the
    >> recycling rules.  I either mean I want a scalar or a vector of
    >> equal/appropriate dimension.  I never want a recycle of a smaller
    >> vector.  (I do often use a recycle of a scalar.)
    >> 
    >> regards,
    >> 
    >> /iaw
    >> 
    >> ______________________________________________
    >> 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
    >> 

    Gabor> ______________________________________________
    Gabor> R-help at stat.math.ethz.ch mailing list
    Gabor> https://stat.ethz.ch/mailman/listinfo/r-help
    Gabor> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html



More information about the R-help mailing list