Strange behaviour of the [[ operator
Martin Maechler <maechler at stat.math.ethz.ch> writes:
>> a <- list(b=5)
>> a[['b']]
Herve> [1] 5
>> a[[t<-'b']]
Herve> Nothing gets printed!
Yes, but that is not really much related to "[["
but rather to "<-" which momentarily turns off auto-printing.
Yes, not being related to "[[" is exactly why it is surprising.
I would expect vv[[f(x)]] to print regardless of f's auto-printing
behavior.
f1 <- function(x) x
f2 <- function(x) return(invisible(x))
a <- list(b=5)
a[[f1("a")]]
a[[f2("a")]]
Similar things happen in many similar circumstances.
Here's a similar thing:
v <- 1:5 v
[1] 1 2 3 4 5
v[mustBeDocumentedSomewhere=3]
[1] 3 And this can be confusing if one thinks that subsetting is really a function and behaves like other R functions w.r.t. to treatment of named arguments:
m <- matrix(1:4, nrow=2) m
[,1] [,2] [1,] 1 3 [2,] 2 4
m[j=2]
[1] 2