如何在 r 中使用 do.call(3 个示例)


您可以在 R 中使用do.call()将给定函数应用于整个列表。

该函数使用以下基本语法:

 do. call (function, list)

以下示例展示了如何在实践中使用do.call()

示例 1:将 do.call() 与 sum 结合使用

以下代码展示了如何使用do.call()计算列表中值的总和:

 #create list
values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2))

#calculate sum of values in list
do. call (sum, values_list)

[1] 48

列表中的值的总和是48

请注意,如果我们只是尝试直接对列表使用sum(),我们会收到错误:

 #create list
values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2))

#attempt to sum values in list
sum(values_list)

Error in sum(values_list): invalid 'type' (list) of argument

示例 2:使用 do.call() 求平均值

以下代码展示了如何使用do.call()计算列表中值的平均值:

 #define argument to use in do.call
args <- list(1:20, na. rm = TRUE )

#calculate mean of values in list
do. call (mean, args)

[1] 10.5

列表中值的平均值为10.5

请注意,如果我们只是尝试直接对列表使用Mean(),我们会收到错误:

 #attempt to calculate mean of values in list
mean(list(1:20), na. rm = TRUE )

[1] NA
Warning message:
In mean.default(list(1:20), na.rm = TRUE):
  argument is not numeric or logical: returning NA

示例 3:将 do.call() 与 rbind 一起使用

以下代码展示了如何在 R 中使用do.call()连接多个数据框:

 #create three data frames
df1 <- data. frame (team=c('A', 'B', 'C'),
                  dots=c(22, 27, 38))

df2 <- data. frame (team=c('D', 'E', 'F'),
                  dots=c(22, 14, 20))

df3 <- data. frame (team=c('G', 'H', 'I'),
                  dots=c(11, 15, 18))

#place three data frames into list
df_list <- list(df1, df2, df3)

#row bind together all three data frames
do. call (rbind, df_list)

  team points
1 to 22
2 B 27
3 C 38
4 D 22
5 E 14
6 F 20
7 G 11
8:15 a.m.
9 I 18

结果是一个数据帧,其中包含三个数据帧中每个数据帧的行。

请注意,如果我们尝试直接对列表使用rbind(),我们将不会收到所需的数据帧:

 #create three data frames
df1 <- data. frame (team=c('A', 'B', 'C'),
                  dots=c(22, 27, 38))

df2 <- data. frame (team=c('D', 'E', 'F'),
                  dots=c(22, 14, 20))

df3 <- data. frame (team=c('G', 'H', 'I'),
                  dots=c(11, 15, 18))

#place three data frames into list
df_list <- list(df1, df2, df3)

#attmempt to row bind together all three data frames
rbind(df_list)

        [,1] [,2] [,3]  
df_list List,2 List,2 List,2

其他资源

以下教程解释了如何使用 R 中的其他常用函数:

如何在R中使用paste和paste0函数
如何在R中使用replace()函数
如何在 R 中使用 View() 函数
如何在R中使用rep()函数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注