[R] Subset doesn't drop unused factor levels
Frank E Harrell Jr
f.harrell at vanderbilt.edu
Thu Oct 7 20:38:45 CEST 2004
hadley wickham wrote:
> a <- data.frame(b = rep(1:5, each=2), c=factor(rep("a",10), levels=c("a","b")))
> levels(subset(a, b=1, drop=T)$c)
> # [1] "a" "b"
>
> Is this a bug?
>
> Thanks,,
>
> Hadley
>
This is always controversial. I am apparently in the small minority in
believing that the default behavior is what you are wishing for. That's
why the Hmisc package by default drops unused levels (but allows you to
override that with options(drop.unused.levels=FALSE). It is distasteful
to have to override system behavior but I felt I had to in this case.
No one in R-core wanted to add a non-default option to R e.g.
options(drop.unused.levels=TRUE).
Frank
--
Frank E Harrell Jr Professor and Chair School of Medicine
Department of Biostatistics Vanderbilt University
More information about the R-help
mailing list