[Rd] Definition of [[

Stavros Macrakis macrakis at alum.mit.edu
Sun Mar 15 19:31:43 CET 2009


The semantics of [ and [[ don't seem to be fully specified in the
Reference manual.  In particular, I can't find where the following
cases are covered:

> cc <- c(1); ll <- list(1)

> cc[3]
[1] NA
OK, RefMan says: If i is positive and exceeds length(x) then the
corresponding selection is NA.

> dput(ll[3])
list(NULL)
? i is positive and exceeds length(x); why isn't this list(NA)?

> ll[[3]]
Error in list(1)[[3]] : subscript out of bounds
? Why does this return NA for an atomic vector, but give an error for
a generic vector?

> cc[[3]] <- 34; dput(cc)
c(1, NA, 34)
OK

ll[[3]] <- 34; dput(ll)
list(1, NULL, 34)
Why is second element NULL, not NA?
And why is it OK to set an undefined ll[[3]], but not to get it?

I assume that these are features, not bugs, but I can't find
documentation for them.

            -s



More information about the R-devel mailing list