Skip to content

if(foo == TRUE) .. etc

2 messages · bogdan romocea, Thomas Lumley

#
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.



-----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> 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
#
On Fri, 22 Apr 2005, bogdan romocea wrote:

            
Allowing T and F to be used as variables is deliberate. R CMD check will 
check to see if you use T and F without defining them, which catches most 
examples.  This is done using makeActiveBinding, see the help to find out 
how you can use it yourself.

 	-thomas