如何简化此R代码来绑定列表的所有表?

时间:2018-06-30 12:15:17

标签: r list rbind

必须有一种简单的方法来查找列表中的所有表,该怎么做?

rbind(tempOut[[1]], tempOut[[2]], tempOut[[3]], tempOut[[4]], 
                 tempOut[[5]], tempOut[[6]], tempOut[[7]], tempOut[[8]], 
                 tempOut[[9]], tempOut[[10]], tempOut[[11]], tempOut[[12]],
                 tempOut[[13]], tempOut[[14]], tempOut[[15]], tempOut[[16]],
                 tempOut[[17]], tempOut[[18]], tempOut[[19]], tempOut[[20]],
                 tempOut[[21]], tempOut[[22]], tempOut[[23]], tempOut[[24]],
                 tempOut[[25]], tempOut[[26]], tempOut[[27]], tempOut[[28]], 
                 tempOut[[29]], tempOut[[30]], tempOut[[31]], tempOut[[32]])

1 个答案:

答案 0 :(得分:0)

1)do.call 。使用第一行提供可重现的测试输入(其中BOD是内置的6行数据帧),我们将do.call与{{1 }} 如图所示。不使用任何软件包。

rbind

给予:

tempOut <- list(BOD, 10*BOD, 100*BOD) # test input

do.call("rbind", tempOut)

2)减少:第二种基本替代方法是:

   Time demand
1     1    8.3
2     2   10.3
3     3   19.0
4     4   16.0
5     5   15.6
6     7   19.8
7    10   83.0
8    20  103.0
9    30  190.0
10   40  160.0
11   50  156.0
12   70  198.0
13  100  830.0
14  200 1030.0
15  300 1900.0
16  400 1600.0
17  500 1560.0
18  700 1980.0

3)软件包:还有一些提供此功能的软件包,包括data.table中的Reduce("rbind", tempOut) ,dplyr中的rbindlist和plyr中的bind_rows

3a)purrr :: map_dfr 特别要注意的是,如果要跟踪每行来自哪个表是purrr解决方案-还要注意data.table的rbind.fill具有@Henrik的评论中的rbindlist自变量。

idcol=

给予:

library(dplyr) # map_dfr from purrr also requires dplyr
library(purrr)
map_dfr(tempOut, identity, .id = "id")