我想要使用left_join
函数连接多个数据帧:
dfs <- list(
df1 = data.frame(a = 1:3, b = c("a", "b", "c")),
df2 = data.frame(c = 4:6, b = c("a", "c", "d")),
df3 = data.frame(d = 7:9, b = c("b", "c", "e"))
)
Reduce(left_join, dfs)
# a b c d
# 1 1 a 4 NA
# 2 2 b NA 7
# 3 3 c 5 8
这是因为它们都有相同的b
列,但Reduce
不允许我指定可以传递给left_join
的其他参数。是否有什么解决方法可以解决这个问题?
dfs <- list(
df1 = data.frame(a = 1:3, b = c("a", "b", "c")),
df2 = data.frame(c = 4:6, d = c("a", "c", "d")),
df3 = data.frame(d = 7:9, b = c("b", "c", "e"))
)
更新
这种方法可以使用:Reduce(function(...) left_join(..., by = c("b" = "d")), dfs)
,但是当by
的元素超过一个时,会出现以下错误:Error: cannot join on columns 'b' x 'd': index out of bounds
Reduce(function(...) left_join(..., other args here), dfs)
吗? - Rich Scriven