do.call with left_join - 后缀错误

时间:2017-12-15 13:09:57

标签: r left-join do.call

说,我有一个这样的数据框列表:

# To create dummy data
df_create <- function(x) data.frame(a = 1:x, b = runif(x))

# Create list of dummy data frames
mylist <- list(df_create(10), df_create(10), df_create(10), df_create(10))

我可以使用cbinddo.call将它们绑定在一起,如下所示:

# Bind data frames together
do.call(cbind, mylist)

#    a          b  a          b  a         b  a          b
#1   1 0.02000419  1 0.29098648  1 0.1433533  1 0.59307504
#2   2 0.26775702  2 0.23208306  2 0.1729216  2 0.04506591
#3   3 0.01336910  3 0.78083216  3 0.6713367  3 0.84223524
#4   4 0.46972923  4 0.43417273  4 0.2663393  4 0.03955171
#5   5 0.62543992  5 0.38561626  5 0.3620604  5 0.11384484
#6   6 0.25747343  6 0.53876212  6 0.2875563  6 0.10921397
#7   7 0.48790572  7 0.08488719  7 0.1627827  7 0.08641714
#8   8 0.54707416  8 0.28780866  8 0.7763911  8 0.48040182
#9   9 0.58214358  9 0.98220356  9 0.5845031  9 0.80809334
#10 10 0.11839613 10 0.40025797 10 0.7633499 10 0.86299285

但这会留下所有a列,它们是相同的。所以,我真正需要做的就是加入他们。如果我只做第一对,它可能看起来像这样:

# Just two elements
left_join(mylist[[1]], mylist[[2]], by = "a")

#    a        b.x        b.y
#1   1 0.02000419 0.29098648
#2   2 0.26775702 0.23208306
#3   3 0.01336910 0.78083216
#4   4 0.46972923 0.43417273
#5   5 0.62543992 0.38561626
#6   6 0.25747343 0.53876212
#7   7 0.48790572 0.08488719
#8   8 0.54707416 0.28780866
#9   9 0.58214358 0.98220356
#10 10 0.11839613 0.40025797

这很棒。这就是我想要的,但对于所有列表中的数据帧。因此,接下来我尝试将left_joindo.call合并:

# Expanding using do.call
do.call(left_join, c(mylist, by = "a"))

这会引发以下错误:

  

错误:suffix必须是长度为2的字符向量,而不是长度为2的列表

这似乎是指添加到重复列的后缀(例如,上面两个数据框连接示例中添加到.x列的.yb) 。由于我没有在任何地方指定suffix,因此left_join的默认参数值必须与do.call不一致,但我不知道如何解决此错误。有什么建议?

0 个答案:

没有答案