我有两个清单, 说
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循环来实现。还有其他更简单的方法吗?
谢谢!
答案 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)
将sapply
与simplify=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