如何在r中组合两个具有相同结构的列表

时间:2014-01-24 20:10:23

标签: r

我有两个清单, 说

list1<-list(a=c(0,1,2),b=c(3,4,5));
list2<-list(a=c(7,8,9),b=c(10,11,12));

如何将组合列表作为

list(a= rbind(c(0,1,2),c(7,8,9)), b = rbind(c(3,4,5),c(10,11,12)) )

我可以通过for循环来实现。还有其他更简单的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

我认为这一般会起作用:

l<-lapply(names(list1),function(x) rbind(list1[[x]],list2[[x]]))
names(l)<-names(list1)

但如果你能保证每个清单中的订单相同,那就可以了。

mapply(rbind,list1,list2,SIMPLIFY=FALSE)
# $a
# [,1] [,2] [,3]
# [1,]    0    1    2
# [2,]    7    8    9
# 
# $b
# [,1] [,2] [,3]
# [1,]    3    4    5
# [2,]   10   11   12

答案 1 :(得分:4)

sapplysimplify=FALSE一起使用可获得免费命名的元素:

> sapply(names(list1),function(n){rbind(list1[[n]],list2[[n]])},simplify=FALSE)
$a
     [,1] [,2] [,3]
[1,]    0    1    2
[2,]    7    8    9

$b
     [,1] [,2] [,3]
[1,]    3    4    5
[2,]   10   11   12