[R] Idioms for empty dataframes
Thomas Lumley
tlumley at u.washington.edu
Mon Oct 1 20:47:23 CEST 2007
On Mon, 1 Oct 2007, Ranjan Bagchi wrote:
> I'm fairly new to R, coming from a programming background -- it's quite
> nice to work with dataframes, though, as opposed to explicit iteration.
>
> One thing I've found, which is surprising is that zero-length dataframes
> seem to cause errors:
It's not zero-length data frames (at least in your example), but
zero-length non-dataframes
>> t <- data.frame(bob=c(100))
>> order(t$bob)
> [1] 1
>> t1 <- t[t$bob < 50]
I think you expect this to be a data frame with one column and no rows,
but
> t[t$bob < 50]
NULL data frame with 1 rows
This wass probably a typo for
t1 <- t[t$bob < 50,]
Even this doesn't do what you want, because a single-column data frame
decays into a vector on subsetting (FAQ 7.5), so you get
> t[t$bob < 50,]
numeric(0)
If you do
t1 <- t[t$bob < 50,,drop=FALSE]
you get a data frame with one column and no rows, and then
> order(t1$bob)
integer(0)
more or less as you expected.
-thomas
Thomas Lumley Assoc. Professor, Biostatistics
tlumley at u.washington.edu University of Washington, Seattle
More information about the R-help
mailing list