Message-ID: <Pine.LNX.4.43.0902100442340.21746@hymn34.u.washington.edu>
Date: 2009-02-10T12:42:34Z
From: Thomas Lumley
Subject: Bug in subsetting data frame (PR#13515)
In-Reply-To: <20090210102506.CB966282EF48@mail.pubhealth.ku.dk>
On Tue, 10 Feb 2009 xinlee883 at stat.math.ethz.ch wrote:
>
> I discover annoying bug in subsetting data frame. Here is reproducable
> examples:
These are not bugs.
>> data.frame <- data.frame(x = runif(5), y = runif(5), row.names =
> c('a','b','c','d','e')
>
>> subset <- data.frame['x']
>> subset['a',]
> work
>
>> subset <- data.frame$x
>> subset['a',]
> not work
This can't possibly work, since you have explicitly requested that subset not be a data frame.
There has been recent discussion about whether row names should be added as names to vectors from a data frame, in which case subset['a'] would then work. It doesn't now, and that isn't a bug either.
>> subset <- data.frame['a',]
>> subset[,'x']
> work
>
>> subset <- data.frame[,'x']
>> subset['a',]
> not work
This is also not a bug. The drop= option to [ controls what happens when the subset has dimensions of length 1. If you want subset to be a data frame in this context, use
subset <- data.frame[,'x',drop=FALSE]
and then subset['a',] will do want you want.
-thomas
Thomas Lumley Assoc. Professor, Biostatistics
tlumley at u.washington.edu University of Washington, Seattle