levels() counter-intuitif? (PR#1693)
rjvbertin@hotmail.com writes:
Suppose I have a factor size with levels "small", "medium" and "large". Then, when I subset this factor:
ss<-size[size!="medium"]
to get at the extremes,
levels(ss)
.... Levels: large medium small The same happens with
subset( size, size!="medium")
I understand that the resulting factor inherits the possible levels from its "parent", but I do not see in what that is useful. Intuitively, I would expect that levels(ss) return "small" and "large". For subset(), there might be an option to request inheritance of the number of levels.
Not a bug (in any sense). Basically, you do need factors with levels that are not present once in a while (we had a tabulation example recently), and it is easier to remove unwanted levels than it is to get the levels back in. E.g.
x[-1]
[1] medium large Levels: large medium small
x[-1,drop=T]
[1] medium large Levels: large medium
factor(x[-1])
[1] medium large Levels: large medium As for the usefulness, consider this
with(subset(juul,sex==1), table(menarche))
numeric(0)
juul$menarche <- factor(juul$menarche) with(subset(juul,sex==1), table(menarche))
menarche 1 2 0 0
O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._