On Oct 30, 2013, at 6:04 AM, Jack Tanner wrote:

> I'm not sure if this is correct behavior or not, but it seems 
> counterintuitive 
> to me:
> 
> dat <- data.frame(id=1:5, let=letters[1:5])
> # A. omits the first row
> dat[- 1, ]
> 
> # B. unexpectedly omits ALL rows
> dat[- integer(0), ]
> 
> It would be less surprising if there were no rows omitted in the (B) case.

Yes. It is surprising. It is also teh reason why the construction is also not 
returning what a user might expect:

dat[-which(dat$id >5), ]
#[1] id  let
#<0 rows> (or 0-length row.names)

(And yes I know that many people never use which with a logical. I'm just not 
one of those for what I consider good reasons.)

`subset` may be preferred,  at least for console interaction:

 subset( dat, !(id >5) )
  id let
1  1   a
2  2   b
3  3   c
4  4   d
5  5   e

-- 

David Winsemius
Alameda, CA, USA

______________________________________________
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.

Reply via email to