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 > > [EMAIL PROTECTED] 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@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. > > > > ______________________________________________ R-help@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.