我正在尝试合并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
到目前为止我唯一的想法是将列表转换为数据帧,并使用合并功能。有什么比这更简单了吗?
非常感谢你的帮助。
答案 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