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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。