2014-01-24 115 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 
相關問題