what does '[[' mean in the function lapply(x, '[[', VarNames[[type]]) in R?

It's an extraction function. As @mnel notes, the help file at ?Extract will give you lots of information.

Here are a couple of examples using [[ and [ as functions as you would more normal looking base functions like sum table etc:

> test <- list(a=1:10,b=letters[1:10])
> test
$a
 [1]  1  2  3  4  5  6  7  8  9 10

$b
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"


> "[["(test,1)
 [1]  1  2  3  4  5  6  7  8  9 10


> "[["(test,2)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"


> "["(test,1)
$a
 [1]  1  2  3  4  5  6  7  8  9 10


> "["(test,2)
$b
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"

It is the function [[ which extracts single elements. See ?"[["

It is the same function you see at work in

VarNames[[type]]   

That expression will cause each successive value of 'x' to be given to [[ as its first argument and for VarNames[[type]] to be evaluated and used as the second argument. The result should be a series of function calls of the form:

`[[`( x[[1]], VarNames[[type]] )

Notice I presented this as a functional form. The usual way of seeing this written for a first single case would be :

x[[1]][[ VarNames[[type]]) ]]

That second form gets parsed into the first form by the R interpreter.

Tags:

R