Hi! Yesterday I accidentally discovered this: > a <- LETTERS[1:5] > a [1] "A" "B" "C" "D" "E" > > a[1] <- factor(a[1]) > a [1] "1" "B" "C" "D" "E"
BUT: > b <- factor(LETTERS[1:5]) > b [1] A B C D E Levels: A B C D E > b[1] <- factor(b[1]) > b [1] A B C D E Levels: A B C D E > b[1] <- as.character(b[1]) > b [1] A B C D E Levels: A B C D E I think this would definitely deserve a mention in the R Inferno... I guess this is documented somewhere (though I could not find anything in help("[<-"). Would someone be kind enough to give me the explanation of this behavior? I suspect this has something to do with the coercion order, but I do not really get why a[1] does not get assigned the result of as.character(factor(a[1]))... Probably, there is no special-casing of factors, which are handled as integer vectors? Wouldn't it be useful to print a warning when this happens, since nobody reasonable would rely on such a special behavior? I wish R had a "safe mode" where all these tricky implicit coercion cases would warn... :-/ Regards ______________________________________________ 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.