r - bind_rows和tidyeval拼接失败

标签 r rlang tidyeval

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

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

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

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

失败并显示错误:只能拼接列表

最佳答案

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

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

关于r - bind_rows和tidyeval拼接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264139/

相关文章:

r - 我可以重命名 R 中的关键字吗?

r - 在R中,如何选择已分组的数据框?

r - 如何在 dplyr 中对 r 中包含 POSIXct 数据类型的数据帧进行分组

lm() 公式中的 rlang 双花括号

r - 如何有效地为依赖 dplyr 的自定义函数使用不同的参数?

r - 使用 tidyeval 编程: tidyr::unite(col = !!col) 之后的 mutate 函数

R使用if语句改变多列

r - 如何以编程方式过滤 dplyr 中的列?

r - 使用变量名称向量在 left_join 之后合并重复变量