如何组合R中数据列表中的元素?

时间:2014-04-12 19:45:57

标签: r

例如我有一个数据列表(可能有很多元素,但这里只有2个):

> datalist = list(a = matrix(1:10, 5, 2), b = matrix(11:20, 5, 2))
> datalist
$a
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

$b
     [,1] [,2]
[1,]   11   16
[2,]   12   17
[3,]   13   18
[4,]   14   19
[5,]   15   20

我想将这两个元素结合起来。 b进入数据框,比如说

> dataframe
      [,1] [,2]
 [1,]    1    6
 [2,]    2    7
 [3,]    3    8
 [4,]    4    9
 [5,]    5   10
 [6,]   11   16
 [7,]   12   17
 [8,]   13   18
 [9,]   14   19
[10,]   15   20

也就是说,数据列表中有许多元素。它们都有相同的列。我想将它们组合成一个数据框,例如在R中使用“rbind()”函数。 怎么做?谢谢!

2 个答案:

答案 0 :(得分:3)

我想你想要do.call(rbind, ...)

do.call(rbind, datalist)
#      [,1] [,2]
# [1,]    1    6
# [2,]    2    7
# [3,]    3    8
# [4,]    4    9
# [5,]    5   10
# [6,]   11   16
# [7,]   12   17
# [8,]   13   18
# [9,]   14   19
#[10,]   15   20

2015年9月16日更新:大型列表的更有效方法是

data.table::rbindlist(lapply(datalist, as.data.frame)) 

答案 1 :(得分:2)

轻松与plyr

library(plyr)

datalist = list(a = matrix(1:10, 5, 2), b = matrix(11:20, 5, 2))

dat <- ldply(datalist)

print(dat)
##    .id  1  2
## 1    a  1  6
## 2    a  2  7
## 3    a  3  8
## 4    a  4  9
## 5    a  5 10
## 6    b 11 16
## 7    b 12 17
## 8    b 13 18
## 9    b 14 19
## 10   b 15 20

如果您愿意/必须,请删除.id列。