On Fri, 2 Jul 2004, Frank E Harrell Jr wrote:
Brian Ripley stated that in the future it will not be a good idea to
have top-level code in R packages other than assignments. There is one
important exception, though it leads instantly to an assignment. To
maintain compatibility across multiple platforms (R, S-Plus, and more
than one version of each, Windows, Linux, etc.) I frequently use if( )
statements to conditionally define functions depending on the operating
system and the version of R or S-Plus in effect.
That _is_ a top-level assignment. `Defining' a function is actually
assigning a value to a symbol, and code inside if, for, etc is executed at
top level.
I prefer to write
foo <- if(tools:::.OStype() == "windows") {...} else {...}
for conditional `definitions' precisely because it is clearer that is what
is going on.