R 語言中的 rapply() 函數用於將函數遞歸應用於列表。
用法:
rapply(object, f, classes = “ANY”, deflt = NULL, how = c(“unlist”, “replace”, “list”))
參數:
object:表示列表或表達式
f:表示要遞歸應用的函數
classes:表示向量的類名或 “ANY” 以匹配任何類
deflt:表示如何不是 “replace” 時的默認結果
how:代表模式
rapply() 函數中的模式有 2 種基本類型。如果how = “replace”,列表對象的每個元素不是它本身就是一個列表,並且在類中包含一個類,那麽列表的每個元素都被應用到該元素的函數 f 的結果值替換。
如果how = “list” 或how = “unlist”,則複製列表對象,並且所有包含在類中的非列表元素被應用於該元素的函數f 的結果值替換,所有其他元素被deflt 替換。
示例 1:使用替換模式
# Defining a list
ls <- list(a = 1:5, b = 100:110, c = c('a', 'b', 'c'))
# Print whole list
cat("Whole List:\n")
print(ls)
# Using replace mode
cat("Using replace mode:\n")
rapply(ls, mean, how = "replace", classes = "integer")
輸出:
Whole List: $a [1] 1 2 3 4 5 $b [1] 100 101 102 103 104 105 106 107 108 109 110 $c [1] "a" "b" "c" Using replace mode: $a [1] 3 $b [1] 105 $c [1] "a" "b" "c"
示例 2:使用列表模式
# Defining a list
ls <- list(a = 1:5, b = 100:110, c = c('a', 'b', 'c'))
# Print whole list
cat("Whole List:\n")
print(ls)
# Using list mode
cat("Using list mode:\n")
rapply(ls, mean, how = "list", classes = "integer")
輸出:
Whole List: $a [1] 1 2 3 4 5 $b [1] 100 101 102 103 104 105 106 107 108 109 110 $c [1] "a" "b" "c" Using list mode: $a [1] 3 $b [1] 105 $c NULL
示例 3:使用非列表模式
# Defining a list
ls <- list(a = 1:5, b = 100:110, c = c('a', 'b', 'c'))
# Print whole list
cat("Whole List:\n")
print(ls)
# Using unlist mode
cat("Using unlist mode:\n")
rapply(ls, mean, how = "unlist", classes = "integer")
輸出:
Whole List: $a [1] 1 2 3 4 5 $b [1] 100 101 102 103 104 105 106 107 108 109 110 $c [1] "a" "b" "c" Using unlist mode: a b 3 105
相關用法
- R語言 lapply()用法及代碼示例
- R語言 tapply()用法及代碼示例
- R語言 apply()用法及代碼示例
- R語言 as.list()用法及代碼示例
- R語言 is.list()用法及代碼示例
- R語言 args()用法及代碼示例
- R語言 search()用法及代碼示例
- R語言 ls()用法及代碼示例
- R語言 seq.int()用法及代碼示例
- R語言 colors()用法及代碼示例
- R語言 is.primitive()用法及代碼示例
- R語言 dunif()用法及代碼示例
- R語言 optimize()用法及代碼示例
- R語言 lgamma()用法及代碼示例
- R語言 digamma()用法及代碼示例
- R語言 trigamma()用法及代碼示例
注:本文由純淨天空篩選整理自utkarsh_kumar大神的英文原創作品 Recursively apply a Function to a List in R Programming – rapply() function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。