2014-01-24 68 views
4

结合我有两个列表, 说如何将两个表具有相同的结构中的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循环做。任何其他更简单的方法呢?

谢谢!

+0

你想做这个的任何理由?看起来你想要将列表1,2,...中的'$ a'合并到一个矩阵中,如果列表1,2,...中的$ a中的元素是不同的类别 – rawr

回答

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 
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 
相关问题