[R] if(foo == TRUE) .. etc

Martin Maechler maechler at stat.math.ethz.ch
Mon Apr 25 16:27:19 CEST 2005


>>>>> "Vincent" == Vincent Goulet <vincent.goulet at act.ulaval.ca>
>>>>>     on Fri, 22 Apr 2005 16:56:45 -0400 writes:

    Vincent> Le 22 Avril 2005 13:41, Liaw, Andy a écrit :
    >> > From: bogdan romocea
    >> >
    >> > Great suggestion; it made me change all my Ts/Fs to
    >> TRUE/FALSE.  > Given >    F <- TRUE >    T <- FALSE > is
    >> it possible to forbid T to stand for TRUE, and F for
    >> FALSE in >    function(...,something=T)?  > Or,
    >> alternatively, never allow F <- whatever and T <-
    >> whatever?
    >> >
    >> > I don't know what the technical side is, but I think it
    >> would be much > better if this particular blunder (major,
    >> yet rather easy to overlook) > was impossible to make.
    >> 
    >> R FAQ 3.3, bullet #3:
    >> 
    >> In R, T and F are just variables being set to TRUE and
    >> FALSE, respectively, but are not reserved words as in S
    >> and hence can be overwritten by the user. (This helps
    >> e.g. when you have factors with levels "T" or "F".)
    >> Hence, when writing code you should always use TRUE and
    >> FALSE.
    >> 
    >> If T and F are changed as you suggested above, it will
    >> break S compatibility in lots of code.
    >> 
    >> Andy

    Vincent> I think it used to be that the situation about
    Vincent> T/TRUE and F/FALSE being preassigned/reserved was
    Vincent> exactly the opposite between R and S-Plus.

no. that's not true, see below.

    Vincent> However, in S-Plus 6.1.2 for Linux and S-Plus 6.2.1
    Vincent> for Windows, TRUE and FALSE and still preassigned
    Vincent> values of T and F, respectively, but one cannot
    Vincent> redefine them. In other words, TRUE and FALSE are
    Vincent> also reserved names in S-Plus.

That has always been the case.

    Vincent> So, using TRUE and FALSE seems to be a common
    Vincent> denominator for R and S-Plus (and a sensible
    Vincent> choice, for that matter). That's what I teach my
    Vincent> students.

and so ``should'' everyone else.

    Vincent> Vincent

    Vincent> -- Vincent Goulet, Associate Professor École
    Vincent> d'actuariat Université Laval, Québec

Martin Maechler, ETH Zurich




More information about the R-help mailing list