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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。