Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using '[' square bracket as a function for lapply in R

Tags:

r

I've seen the function lapply used in R to extract elements from matrices that exist in a list of matrices.

E.g. I have a list of 3 (2x2) matrices, and I want to extract element [1,2] from each of those 3 matrices.

The code: list1 = lapply(mylist, '[', 1,2) works just fine. It returns a list with those 3 elements.

I am trying to research what this is exactly doing. Google hasn't helped and using ?'[' in the R help isn't too explanatory. I don't see how '[' is a function in R, so the code is not intuitive.

like image 778
AdamC Avatar asked Oct 09 '13 00:10

AdamC


People also ask

What do double square brackets do in R?

The double square brackets in R can be used to reference data frame columns, as shown with the iris dataset. An additional set of square brackets can be used in conjunction with the [[]] to reference a specific element in that vector of elements.


1 Answers

The square brackets are in fact a function whose first argument is the object being subsetted. Subsequent arguments are the index to that subset.

# For example, if M is a matrix M[1, 2]  # extracts the element at row 1, col 2 # is the same as  `[`(M, 1, 2) # Try them!  

Now, Have a look at the arguments to lapply:

args(lapply) # function (X, FUN, ...)  

Everything represented in those dots gets passed on to the function FUN as arguments.

Thus, when FUN="[", the first argument to "[" is the current element of the list (being iterated over), ie, the object being subsetted. While the subsequent arguments are the indexes to "["

like image 104
Ricardo Saporta Avatar answered Sep 22 '22 02:09

Ricardo Saporta