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

Vincent Goulet vincent.goulet at act.ulaval.ca
Fri Apr 22 22:56:45 CEST 2005


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

I think it used to be that the situation about T/TRUE and F/FALSE being 
preassigned/reserved was exactly the opposite between R and S-Plus. However, 
in S-Plus 6.1.2 for Linux and S-Plus 6.2.1 for Windows, TRUE and FALSE and 
still preassigned values of T and F, respectively, but one cannot redefine 
them. In other words, TRUE and FALSE are also reserved names in S-Plus.

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

Vincent

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




More information about the R-help mailing list