[R] Odp: Idioms for empty dataframes

Ranjan Bagchi ranjan.bagchi at frotz.com
Mon Oct 1 18:45:18 CEST 2007


Thanks... that's very helpful.  Sorry about the typo too

> t1 <- t[t$bob < 50, ,drop=F]
> t1
[1] bob
<0 rows> (or 0-length row.names)
> order(t$bob)
[1] 1
>

On Mon, 1 Oct 2007, Petr PIKAL wrote:

> Hi
>
> r-help-bounces at r-project.org napsal dne 01.10.2007 18:01:13:
>
>> 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:
>>
>>> t <- data.frame(bob=c(100))
>>> order(t$bob)
>> [1] 1
>>> t1 <- t[t$bob < 50]
>>> order(t1$bob)
>> Error in order(na.last, decreasing, ...) :
>>     argument 1 is not a vector
>>
>> I'd expect c() as a result, not an error.
>
> Several comments
>
> data frames have dimensions so
>
> t1 <- t[t$bob < 50] # works but is different from
> t1 <- t[t$bob < 50,]
>
> If subset operation [] results i 1 dim object it looses dimension (so as
> names), to prevent this call
>
> t1 <- t[t$bob < 50, ,drop=F]
>
> Regards
> Petr
>
>
>>
>> So I have two questions --
>>   Is there something important I'm misunderstanding?
>>   What idioms do experts use to deal with this?  Just calling nrow to
>> handle the 0 case?  Something cleaner?
>>
>> Thanks,
>>
>> Ranjan
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
>
>
>



More information about the R-help mailing list