R语言 把一个函数递归应用到一个列表中 – rapply()函数

R语言 把一个函数递归应用到一个列表中 – rapply()函数

R语言中的 rapply() 函数用于将一个函数递归应用于一个列表。

语法:

rapply(object, f, classes = “ANY”, deflt = NULL, how = c(“unlist”, “replace”, “list”)

参数

object: 代表列表或表达式

f: 代表要递归应用的函数

classes: 代表向量的类名或 “ANY “来匹配任何类

deflt: 代表当how不是 “替换 “时的默认结果

how: 代表模式

rapply() 函数中的模式有两种基本类型。如果 how = “replace ” ,列表对象的每个元素如果本身不是一个列表,并且有一个包含在类中的类,那么列表的每个元素都被应用于该元素的函数 f 的结果值所替换。

如果 how = “list ” 或者 how = “unlist “, list 对象被复制,所有被包含在类中的非列表元素被应用于该元素的函数 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 5b
 [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] 105c
[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 5b
 [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] 105c
NULL

例子3:使用unlist模式

# 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 5b
 [1] 100 101 102 103 104 105 106 107 108 109 110

$c
[1] "a" "b" "c"

Using unlist mode:
  a   b 
  3 105

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程