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

Liaw, Andy andy_liaw at merck.com
Fri Apr 22 19:41:08 CEST 2005


> 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
 
 
> 
> -----Original Message-----
> From: Martin Maechler [mailto:maechler at stat.math.ethz.ch]
> Sent: Wednesday, April 20, 2005 8:31 AM
> To: R-help at stat.math.ethz.ch
> Subject: [R] if(foo == TRUE) .. etc
> 
> 
> >>>>> "Andy" == Andy Bunn <abunn at whrc.org>
> >>>>>     on Tue, 19 Apr 2005 10:27:04 -0400 writes:
> 
>     .....
>     Andy> is.tuesday <- as.POSIXlt(Sys.time())$wday == 2
>     Andy> if (is.tuesday == T) { ....}
>     .....
> 
> aaah, this really hurts my eyes or rather the brain behind! 
> And it's by far not the first such instance...
> 
> Rather use  " if (is.tuesday) { .... } "
> 
> More generally, please, please, everyone :
> 
>  Replace
> 		if (something == TRUE)
> 	with    if (something)
>  and
> 		if (something.or.other == FALSE)
> 	with    if (!something.or.other)
> 
> {and even more for cases where you have 
>  'T' and 'F' instead of 'TRUE' and 'FALSE' - 
>  which is against all recommendations, since
>   F <- TRUE
>   T <- FALSE
>  are valid statements, probably not common, but think what
>  happens when you accidentally have the equivalent of "T <- 0"
>  somewhere in your global enviroment!
> }
> 
> Martin Maechler, ETH Zurich
> 
> ______________________________________________
> 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
> 
> 
> ______________________________________________
> 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