在R中使用reduce2()连接数据帧

在R中使用reduce2()连接数据帧,r,reduce,R,Reduce,下面介绍了reduce2()的用法 哈德利介绍了这个例子 您可能有一个要连接在一起的数据帧列表,用于连接的变量因元素而异 我无法想象现在的情况 我理解了reduce2(),因为我理解了中的示例 x一个工作示例 这是哈德利可能想到的一个例子。 想象一下,我们有一个列表这些数据帧: library(dplyr) library(purrr) df1=data.frame(a = runif(10),b = runif(10),a_0 = c(1,2,2,5,3,1,2,2,5,3)) df2=da

下面介绍了
reduce2()
的用法

哈德利介绍了这个例子

您可能有一个要连接在一起的数据帧列表,用于连接的变量因元素而异

我无法想象现在的情况

我理解了
reduce2()
,因为我理解了中的示例

x一个工作示例
这是哈德利可能想到的一个例子。
想象一下,我们有一个列表这些数据帧

library(dplyr)
library(purrr)

df1=data.frame(a = runif(10),b = runif(10),a_0 = c(1,2,2,5,3,1,2,2,5,3))
df2=data.frame(a = runif(5),c = runif(5),b_0 = c(4,1,4,1,4))
df3=data.frame(c = runif(3),d = runif(3),a = runif(3),c_0 = c(5,1,2))
df4=data.frame(b = runif(5),a = runif(5),e = runif(5),d_0 = c(5,1,5,3,1))

lst = list(df1,df2,df3,df4)
现在,我们希望通过在公共列/列的基础上,将这些数据帧两个接一个的方式来减少这些数据帧,这是而不是;在我们的例子中,应该是列
a
。相反,我们感兴趣的是根据列表中给出的
中的给定对左键连接数据帧:

by_list=list(c("a_0"="b_0"),c("a_0"="c_0"),c("a_0"="d_0"))
调用
reduce2()
函数时,我们得到以下输出:

reduce2(lst,by_list,left_join)


在这里,我们可以观察到,这将从
df1
的列
a_0
中的公共元素及其在其他数据帧中的对应对生成一个包含所有长格式行的列表注意,例如,
a.x
a.y
a.x.x
a.y.y
,这些后缀表示/分隔那些相同命名的列与嵌套的联接操作,这些联接操作没有用于任何联接操作。

您不明白该函数是如何工作的吗?或者你想提出一个现实世界的问题来应用它?我的观点是:你有一个data.frames列表作为第一个更长的参数。第二个参数(短一个元素)将包含累积data.frame和下一个元素之间连续联接的映射。正如文档所说,我正在尝试提出一个实际问题来应用一个专门的函数:
df1如果在
df
s之前提供
set.seed()
会更好。不过,非常感谢你。理解!