【发布时间】:2019-11-19 12:28:27
【问题描述】:
我有两个要合并的数据框列表,我尝试了以下方法:
A <- data.frame(ID = c(1,2,3),
var1 = c(3,4,5),
var2 = c(6,3,2))
B <- data.frame(ID = c(1,2,3),
var1 = c(4,4,5),
var2 = c(6,7,3))
C <- data.frame(ID = c(1,2,3),
var1 = c(1,4,8),
var2 = c(9,2,3))
list1 <- list(A = A, B = B, C = C)
list2 <- list(A = A, B = B)
combined <- map2(list1, list2, full_join, by = 'ID')
这会返回两个列表长度不同的错误。我想到的唯一另一种方法是在第二个列表中添加一个空白数据框,使它们的长度相同。
是否可以合并这两个列表,以便我得到一个列表,其中 A1 与 A2 连接,B1 与 B2 连接,C1 保持原样?
编辑:突出显示我没有命名列表的元素,我现在已经命名了
【问题讨论】:
-
如果
list2是list(A, C)会怎样? -
它仍然返回相同的错误
Error: Mapped vectors must have consistent lengths: *.x` has length 3 *.yhas length 2` -
不,您的列表必须命名(即
list(A = A, B = B)等...)才能将 A 与 A 匹配,依此类推。如果他们是那样的话,你什么都做不了...... -
您可以命名您的列表元素并匹配名称(在这种情况下,您不需要在 list2 中提供 C)或继续使用位置,但您需要在列表中放置占位符。
-
那么你的答案就在下面:)