当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R语言 rapply()用法及代码示例


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



相关用法


注:本文由纯净天空筛选整理自utkarsh_kumar大神的英文原创作品 Recursively apply a Function to a List in R Programming – rapply() function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。