It gives me a headache, too! I think you'll have to wait for a more expert user than me to supply explanations of these behaviors and their rationales.
-s On 6/26/09, Craig P. Pyrame <crap...@gmail.com> wrote: > Stavros Macrakis wrote: >> On Thu, Jun 25, 2009 at 12:47 PM, Craig P. Pyrame<crap...@gmail.com> >> wrote: >> >>> The man page Stavros quotes states that the class attribute of the result >>> is >>> taken from 'test', which clearly is not the case: >>> >> >> Actually, the behavior is documented pretty clearly: >> >> The mode of the answer will be coerced from logical to >> accommodate first any values taken from 'yes' and then >> any values taken from 'no'. >> >> Whether this is a good design or not is another issue.... Perhaps the >> justification is that it avoids evaluating the yes or no arguments (to >> determine their class) in cases where their value is not needed. >> > > Thank you for pointing me to this. Now I get a headache from trying to > figure out what does mode have to do with class - I thought that the > class of the result should be that of test, and that the mode is > something entirely different. Why does coercing the mode also affect > the class? If the man page said "The class attribute is taken from > test, and it will be coerced ..." or "The mode of the result is taken > from test, and it will be coreced ...", would this be wrong? What is > the class-mode mixture about? > > Why does this fail: > > > r = as.raw(TRUE) > > ifelse(TRUE, r, r) => error > > This gives an error which I take for saying that raw cannot be coerced > to logical, but yes it can: > > > as.logical(r) => TRUE > > and raw can even be used as the condition vector in ifelse: > > > ifelse(r, 1, 2) => 1 > > Best regards, > Craig > > >> Example: >> >> ifelse(c(T,F),1,"a") => c("1","a") >> >> This has the same effect as >> >> res <- c(T,F) >> res[1] <- 1 >> res[2] <- "a" >> >> which is in fact pretty much the way it is implemented. >> >> >>> And also, I find myself incapable of making sense of the "may" in "the >>> mode >>> of the result may depend on the value of 'test'" - may in what sense? >>> >> >> See the examples at the end of ? ifelse >> >> -s >> > > ______________________________________________ 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.