rapply
位于 base
包(package)。 说明
rapply
是 lapply
的递归版本,在结果结构方掩码有灵活性 (how = ".."
)。
用法
rapply(object, f, classes = "ANY", deflt = NULL,
how = c("unlist", "replace", "list"), ...)
参数
object |
|
f |
一个 “principal” 参数的 |
classes |
|
deflt |
默认结果(如果 |
how |
字符串部分匹配给定的三种可能性:请参阅“详细信息”。 |
... |
传递给 |
细节
该函数有两种基本模式。如果是 how = "replace"
,则 object
本身不是 list-like 且具有 classes
中包含的类的每个元素都将替换为将 f
应用于该元素的结果。
否则,使用 how = "list"
或 how = "unlist"
模式,概念上 object
被复制,所有具有 classes
中包含的类的非列表元素将被替换为将 f
应用于该元素的结果,所有其他元素将被替换替换为 deflt
。最后,如果 how = "unlist"
,则对结果调用 unlist(recursive = TRUE)
。
语义与 lapply
有详细的不同:特别是在调用 C 代码之前对参数进行求值。
在R3.5.x 及更早版本,object
被要求是一个列表,这是不是其 list-like 组件的情况就是如此。
值
如果 how = "unlist"
是一个向量,否则 “list-like” 的结构与 object
类似。
例子
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")
rapply(X, deparse, control = "all") # passing extras. argument of deparse()
rapply(X, nchar, classes = "character", deflt = NA_integer_, how = "list")
rapply(X, nchar, classes = "character", deflt = NA_integer_, how = "unlist")
rapply(X, nchar, classes = "character", how = "unlist")
rapply(X, log, classes = "numeric", how = "replace", base = 2)
## 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
rapply(E, nchar, classes = "character", deflt = NA_integer_, how = "unlist")
rapply(LE, as.character) # a "pi" | b1 "expression" | b2 "C1 * C2" ..
rapply(LE, nchar) # (see above)
stopifnot(exprs = {
identical(E , rapply(E , identity, how = "replace"))
identical(LE, rapply(LE, identity, how = "replace"))
})
参考
Chambers, J. A. (1998)
Programming with Data.
Springer.
(rapply
is only described briefly there.)
也可以看看
相关用法
- R rank 样本排名
- R raw 原始向量
- R rawConnection 原始连接
- R range 值范围
- R rawConversion 与(位/打包)原始向量之间的转换
- R readRenviron 从文件设置环境变量
- R remove 从指定环境中删除对象
- R readChar 与连接之间传输字符串
- R rep 复制向量和列表的元素
- R readRDS 单个对象的序列化接口
- R reg.finalizer 对象的最终确定
- R row 行索引
- R row.names 获取和设置 DataFrame 的行名称
- R rowsum 根据分组变量给出矩阵或 DataFrame 的列和
- R rev 反转元素
- R rle 游程长度编码
- R regmatches 提取或替换匹配的子字符串
- R readline 从终端读取一行
- R round.POSIXt 舍入/截断日期时间对象
- R readBin 与连接之间传输二进制数据
- R replace 替换向量中的值
- R readLines 从连接读取文本行
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Recursively Apply a Function to a List。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。