ggrothendieck@gmail.com
2005-Dec-13 19:56 UTC
[Rd] 0/1 vector for indexing leads to funny behaviour (PR#8389) (maybe a documentation deficiency?)
The other place its discussed is in 3.4.1 of the R Language Definition: http://finzi.psych.upenn.edu/R/doc/manual/R-lang.html#Indexing-by-vectors On 12/13/05, Tony Plate <tplate at acm.org> wrote:> Yes, 0/1 (numeric) are intended to be used as index vectors -- and they > have the semantics of numeric indices, which is that 0 elements in the > index are omitted from the result. This can be a very useful mode of > operation in many situations. > > I was going to write "This is described in both the introduction to R, > and in the documentation for '['", except that I checked before I wrote > and was surprised to be unable to any discussion of zeros in indexing in > any of the first three places I looked: > > (1) help page for '[' (There is discussion of zero indices here, but > only in the context of using matrices to index matrices, not in the > context of ordinary vector indices). > > (2) Section 2.7 "Index vectors: selecting and modifying subsets of a > data set" in "An Introduction to R", which does say this about numeric > indices: > 2. A vector of positive integral quantities. In > this case the values in the index vector must > lie in the set {1, 2, . . . , length(x)} > (This seems to commit the sin of not telling the whole truth.) > > (3) Section 5.5 "Array Indexing. Subsections of an array" (In "An > Introduction to R") > > Question for others: did I miss something obvious, or is this a > documentation deficiency that zeros in indices are not discussed in 3 of > some obvious first places to look? > > If indeed this is a documentation deficiency, I'm happy to contribute > documentation patch, but I await other opinions before spending any time > on that. > > -- Tony Plate > > rasche at molgen.mpg.de wrote: > > Full_Name: Axel Rasche > > Version: 2.2.0 > > OS: Linux > > Submission from: (NULL) (141.14.21.81) > > > > > > Dear Debuggers, > > > > This is not a serious problem. Are 0/1 vectors intended to be used as index > > vectors? If yes, there is a bug. If not, it leads just to some funny behaviour > > rather than an error message. > > > > In the appendix is some simple code to reproduce the problem. A logical vector > > as.logic(a) helps by indexing the vector b. The 0/1 vector a just returns the > > first value "a". But as many times as there is a 1 in a. > > > > Best regards, > > Axel > > > > > > Appendix: > > > > b =3D c("a","b","c","d") > > a =3D c(0,1,1,0) > > b[as.logical(a)] > > b[a] > > a =3D c(1,0,1,0) > > b[as.logical(a)] > > b[a] > > a =3D c(0,1,1,1) > > b[as.logical(a)] > > b[a] > > > > ______________________________________________ > > R-devel at r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >