2014-06-27 56 views
0

我想在R中合併2個列表。列表的名稱應該用於執行連接。 這裏是一個玩具例子:在R(多對多關係)中合併兩個列表

> list1 <- list(A=c(1,2,3), B=c(2,4,5,6), C=c(1,3)) 
> list2 <- list(A=c(w,x), B=c(y,z)) 

最終合併的列表應該是這樣的:

$w 
[1] 1 2 3 
$x 
[1] 1 2 3 
$y 
[1] 2 4 5 6 
$z 
[1] 2 4 5 6 

我唯一的想法到目前爲止是列表轉換成數據幀,並使用合併功能。有什麼更簡單的做法嗎?

非常感謝您的幫助。

+1

你可以告訴你試過嗎? – agstudy

+1

等待什麼是'w','x','y'和'z'?就像你在那裏寫的那樣,列表中包含的是對象的名稱,而不是列表中的元素的名稱。 – AndrewMacDonald

回答

3

希望這是像你想要的東西?實際上你根本不需要list2。由於名單實際上是向量,我們可以使用一個名爲向量爲「查找」的list1我們所需要的值,然後分配這些名稱的新列表

list1 <- list(A=c(1,2,3), B=c(2,4,5,6), C=c(1,3)) 

lookup <- c(w = "A",x = "A",y = "B",z = "B") 

list2 <- list1[lookup] 

names(list2) <- names(lookup) 

list2 
$w 
[1] 1 2 3 

$x 
[1] 1 2 3 

$y 
[1] 2 4 5 6 

$z 
[1] 2 4 5 6 
+0

謝謝安德魯。這是一個很好的解決方案! – jul635