合并R中的两个列表(多对多关系)

时间:2014-06-27 07:37:44

标签: r list join merge

我正在尝试合并R中的2个列表。列表的名称应该用于执行连接。 这是一个玩具示例:

> 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 个答案:

答案 0 :(得分:5)

希望这就像你想要的一样?实际上你根本不需要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