rapply {base} | R Documentation |
rapply
is a recursive version of lapply
.
rapply(object, f, classes = "ANY", deflt = NULL, how = c("unlist", "replace", "list"), ...)
object |
A list. |
f |
A function of a single argument. |
classes |
A character vector of |
deflt |
The default result (not used if |
how |
A character string partially matching the three possibilities given: see ‘Details’. |
... |
additional arguments passed to the call to |
This function has two basic modes. If how = "replace"
, each
element of the list which is not itself a list and has a class
included in classes
is replaced by the result of applying
f
to the element.
If the mode is how = "list"
or how = "unlist"
, the list
is copied, all non-list elements which have a class included in
classes
are replaced by the result of applying f
to the
element and all others are replaced by deflt
. Finally, if
how = "unlist"
, unlist(recursive = TRUE)
is called on
the result.
The semantics differ in detail from lapply
: in
particular the arguments are evaluated before calling the C code.
If how = "unlist"
, a vector, otherwise a list of similar
structure to object
.
Chambers, J. A. (1998)
Programming with Data.
Springer.
(rapply
is only described briefly there.)
X <- list(list(a = pi, b = list(c = 1:1)), d = "a test") rapply(X, function(x) x, how = "replace") rapply(X, sqrt, classes = "numeric", how = "replace") rapply(X, nchar, classes = "character", deflt = as.integer(NA), how = "list") rapply(X, nchar, classes = "character", deflt = as.integer(NA), how = "unlist") rapply(X, nchar, classes = "character", how = "unlist") rapply(X, log, classes = "numeric", how = "replace", base = 2)