subListExtract
Extract the same element from the sublists of a list
Given a list of lists, this function can be used to extract a named element from each sublist.
- Keywords
- manip
Usage
subListExtract(L, name, simplify = FALSE, keep.names = TRUE)
Arguments
- L
- A list of named lists
- name
- The name of the element in the sublists that should be extracted. This should be a length one character vector.
- simplify
- When
TRUE
, the return value will be an atomic vector. If any extracted sublist value has length not equal to one andsimplify=TRUE
, an error will be raised. WhenFALSE
, a list is returned containing the extracted elements. - keep.names
- If
TRUE
(default), the names ofL
will be attached to the returned vector.
Details
This function is implemented in C and is intended to be faster than
calling lapply
or sapply
.
Value
-
If
simplify=FALSE
, a list will be returned having the same
length as L
, but with each element containing the
element named name
from the corresponding inner list of
L
.When simplify=TRUE
, an atomic vector will be returned
containing the extracted elements. If any of the inner list elements
do not have length one or cannot be put inside an atomic vector, an
error will be raised.
Examples
list_size = 500000
innerL = list(foo="foo", bar="bar")
L = rep(list(innerL), list_size)
system.time({j0 = sapply(L, function(x) x$foo)})
system.time({j1 = subListExtract(L, "foo", simplify=TRUE)})
stopifnot(all.equal(j0, j1))
LS = L[1:3]
names(LS) = LETTERS[1:3]
subListExtract(LS, "bar", simplify=TRUE)
subListExtract(LS, "bar", simplify=FALSE)
subListExtract(LS, "bar", simplify=TRUE, keep.names=FALSE)
Community examples
Looks like there are no examples yet.