这里的a link介绍了reduce2()
的用法。
哈德利介绍了示例,
您可能有一个要连接在一起的数据框列表,并且用于连接的变量因元素而异。
我无法想象情况如何。
我了解reduce2()
,因为我了解a link
x <- list(c(0, 1), c(2, 3), c(4, 5))
y <- list(c(6, 7), c(8, 9))
reduce2(x, y, paste)
#> [1] "0 2 6 4 8" "1 3 7 5 9"
但是哈德利所描述的例子对我来说很难想象。
有人可以描述这个例子吗?
答案 0 :(得分:2)
这是哈德利可能想到的一个例子。 想象一下,我们有一个列表,其中包含这些数据框:
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
中给出的给定对对left_joining数据帧感兴趣:
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)
在这里我们可以看到,这会产生一个列表,其中包含a_0
的列df1
中存在的公共元素中的所有长格式行,以及其在其他数据帧中的对应对。 请注意 ,例如a.x
,a.y
,a.x.x
,a.y.y
的后缀表示/分隔嵌套联接操作中同名的列,未未用于任何联接操作。