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.
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.
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 "["
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With