[R] subset(..., drop=TRUE) doesn't seem to work.

Peter Dalgaard p.dalgaard at biostat.ku.dk
Wed Jun 16 17:06:26 CEST 2004


Paul Lemmens <P.Lemmens at nici.kun.nl> writes:

> Hello!
> 
> If I read ?subset, the workings of the argument drop (to me) seem to
> imply equivalence of A and B (R 1.9.0):
> 
> #A
> dd <- data.frame(rt=rnorm(10), c=factor(gl(2,5)))
> dd <- subset(dd, c==1)
> dd$c <- dd$c[, drop=TRUE]
> table(dd$c)
> 
> 1
> 5
> 	
> 
> #B
> dd <- data.frame(rt=rnorm(10), c=factor(gl(2,5)))
> dd <- subset(dd, c==1, drop=TRUE)
> table(dd$c)
> 
> 1 2
> 5 0
> 
> So to lose the second level of dd$c, in method B I still need to 'dd$c
> <-
> dd$c[, drop=TRUE]', while the manual seems to imply that with the drop
> argument to subset() this would not be necessary.
> 
> 
> Could you comment?

Looks like a documentation bug. The actual code ends up  doing

    x[r, vars, drop = drop]

and "[.data.frame" will not drop factor levels. I wonder if it ever
did... 

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list