On Sep 30, 2009, at 3:43 AM, Dieter Menne wrote:
Dear List,
creating factors in a given non-default orders is notoriously
difficult to
explain in a course. Students love the ifelse construct given below
most,
but I remember some comment from Martin Mächler (?) that ifelse
should be
banned from courses.
Any better idea? Not necessarily short, easy to remember is important.
Dieter
data = c(1,7,10,50,70)
levs = c("Pre","Post")
# Typical C-Programmer style
factor(levs[as.integer(data >10)+1], levels=levs)
I agree with your observation that many people express a preference
for the ifelse version. I had the same sort of comment on some of my
Excel code (not in a statistical application) a couple of days ago.
In your code the as.integer function is superfluous and you could
argue that it might even be easier to understand for the Boolean-
challenged masses if you substituted as.logical(). It would be also
superfluous, but it might convey a message that the programmer _knew+
that the "+" operation is capable of doing the necessary coercion.
# Easiest to understand
factor(ifelse(data <=10, levs[1], levs[2]), levels=levs)
--
-- Boole Rules
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.