Skip to content
Back to formatted view

Raw Message

Message-ID: <200504221656.45372.vincent.goulet@act.ulaval.ca>
Date: 2005-04-22T20:56:45Z
From: Vincent Goulet
Subject: if(foo == TRUE) .. etc
In-Reply-To: <39B6DDB9048D0F4DAD42CB26AAFF0AFA076E4B@usctmx1106.merck.com>

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