bind_rows 并且 tidyeval 拼接失败

bind_rows and tidyeval splicing fails

子集化然后绑定按预期工作

var <- c("wt", "mpg")
mtcars %>% select(!!!var) -> df1
mtcars %>% select(!!!var) -> df2
bind_rows(df1, df2)

但是如果我们跳过中间步骤

bind_rows(
   mtcars %>% select(!!!var),
   mtcars %>% select(!!!var)
)

失败 Error: only lists can be spliced

我从不使用 !!!!! 因为经常会出错。 相反,我使用 UQ。我不知道这是否是个好习惯,但它确实有效。

bind_rows(
  UQ(mtcars %>% select(var)),
  UQ(mtcars %>% select(var))
)

这是 rlang 中的一个错误,与 值拼接 有关。所有带点的函数都支持拼接,即使它们没有引用它们的输入。这很方便,因为当你有一个参数列表时,你不必将 do.call() 与这些函数一起使用,你可以只拼接列表。

由于技术原因,该机制略有不同。当前存在一个错误,在 select() 调用中使用了值拼接而不是调用拼接。这应该很快就能解决。