如何在 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()函数