I can reproduce this. It seems to be happen when trying to drop the last element, e.g.
> x <- 1:3 > x[-3.1] [1] 1 2 3 > x[-2.1] [1] 1 3 > x[-1.1] [1] 2 3 > x <- 1:2 > x[-2.1] [1] 1 2 > x[-1.1] [1] 2 > x <- 1:4 > x[-4.1] [1] 1 2 3 > x[-3.1] [1] 1 2 4 > x[-2.1] [1] 1 3 4 > x[-1.1] [1] 2 3 4 > x <- 1 > x[-1.1] [1] 1 My *guess* (all time I have) is that it's a bug where as.integer() is applied only *after* (silently) dropping negative indices out of range, e.g. > x <- 1:4 > x[-c(1:10+0.1)] [1] 4 Here -c(4:10+0.1) are dropped because they all > length(x). If someone wish to track this down further, the R source is available at https://svn.r-project.org/R/trunk/ (mirrored at https://github.com/wch/r-source). /Henrik On Thu, Sep 4, 2014 at 8:17 AM, Michael Haupt <michael.ha...@oracle.com> wrote: > Hello, > > I'm a bit puzzled by what looks (to me) like a discrepancy between > documentation and implementation. > > The documentation for [] says this about the indices: "Numeric values are > coerced to integer as by as.integer (and hence truncated towards zero)." > >> as.integer(-3.1) > [1] -3 > > Good. But: > >> x <- c(1,2,3) >> x[-3.1] > [1] 1 2 3 > > Given the documentation, I'd have expected a result of "[1] 1 2", because > -3.1 should be coerced to -3 (by virtue of as.integer). > > What bit do I not get? (I'm using R 3.1.1, if that matters.) > > Best, > > Michael > > -- > Dr. Michael Haupt > Principal Member of Technical Staff > Phone: +49 331 200 7277, Fax: +49 331 200 7561 > Oracle Labs > Oracle Deutschland B.V. & Co. KG, Schiffbauergasse 14, 14467 Potsdam, Germany > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel