[Rd] 0/1 vector for indexing leads to funny behaviour (PR#8389) (maybe a documentation deficiency?)

ggrothendieck@gmail.com ggrothendieck at gmail.com
Tue Dec 13 20:56:23 CET 2005


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 i=
ndex
> > vectors? If yes, there is a bug. If not, it leads just to some funny be=
haviour
> > 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 retur=
ns 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
>



More information about the R-devel mailing list