Examples for 'base::rapply'


Recursively Apply a Function to a List

Aliases: rapply

Keywords: iteration list

### ** Examples

X <- list(list(a = pi, b = list(c = 1L)), d = "a test")
# the "identity operation":
rapply(X, function(x) x, how = "replace") -> X.; stopifnot(identical(X, X.))
rapply(X, sqrt, classes = "numeric", how = "replace")
[[1]]
[[1]]$a
[1] 1.772454

[[1]]$b
[[1]]$b$c
[1] 1



$d
[1] "a test"
rapply(X, deparse, control = "all") # passing extras. argument of deparse()
                   a                  b.c                    d 
"3.1415926535897931"                 "1L"         "\"a test\"" 
rapply(X, nchar, classes = "character", deflt = NA_integer_, how = "list")
[[1]]
[[1]]$a
[1] NA

[[1]]$b
[[1]]$b$c
[1] NA



$d
[1] 6
rapply(X, nchar, classes = "character", deflt = NA_integer_, how = "unlist")
  a b.c   d 
 NA  NA   6 
rapply(X, nchar, classes = "character",                      how = "unlist")
d 
6 
rapply(X, log, classes = "numeric", how = "replace", base = 2)
[[1]]
[[1]]$a
[1] 1.651496

[[1]]$b
[[1]]$b$c
[1] 1



$d
[1] "a test"
## with expression() / list():
E  <- expression(list(a = pi, b = expression(c = C1 * C2)), d = "a test")
LE <- list(expression(a = pi, b = expression(c = C1 * C2)), d = "a test")
rapply(E, nchar, how="replace") # "expression(c = C1 * C2)" are 23 chars
expression(c(4L, 2L, 23L), d = 6L)
rapply(E, nchar, classes = "character", deflt = NA_integer_, how = "unlist")
    d 
NA  6 
rapply(LE, as.character) # a "pi" | b1 "expression" | b2 "C1 * C2" ..
           a           b1           b2            d 
        "pi" "expression"    "C1 * C2"     "a test" 
rapply(LE, nchar)        # (see above)
 a b1 b2  d 
 2 10  7  6 
stopifnot(exprs = {
  identical(E , rapply(E , identity, how = "replace"))
  identical(LE, rapply(LE, identity, how = "replace"))
})

[Package base version 4.2.3 Index]