R 绑定行和整洁拼接失败

R 绑定行和整洁拼接失败,r,rlang,tidyeval,R,Rlang,Tidyeval,按预期进行分包和装订 var <- c("wt", "mpg") mtcars %>% select(!!!var) -> df1 mtcars %>% select(!!!var) -> df2 bind_rows(df1, df2) 它失败,出现错误:只有列表可以拼接我从不使用或因为经常会出现问题。 相反,我使用UQ。我不知道这是否是一个好的做法,但它是有效的 bind_rows( UQ(mtcars %>% select(var)), UQ(m

按预期进行分包和装订

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

它失败,出现
错误:只有列表可以拼接

我从不使用
因为经常会出现问题。
相反,我使用
UQ
。我不知道这是否是一个好的做法,但它是有效的

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

这是rlang中的一个bug,它与值拼接有关。所有采用dots的函数都支持拼接,即使它们不引用输入。这很方便,因为您不必对这些函数使用
do.call()


由于技术原因,机制有点不同。当前有一个bug,在
select()
调用中使用了值拼接而不是调用拼接。这应该很快就会修复。

这是rlang中的一个错误,请在那里发布一个问题。实际上,我刚刚打开了一个问题:@lionel这是可能的。但是为什么它会给出相同的结果呢?它给出相同的结果是因为它什么都不做。在Rickard的版本中,拼接创建了这个调用:
select(“wt”、“mpg”)
。在您的版本中,
UQ()
不起任何作用,select调用的结果如下:
select(c(“wt”、“mpg”)
,它也可以工作(但在下一个版本中不起作用,请参阅)
bind_rows(
  UQ(mtcars %>% select(var)),
  UQ(mtcars %>% select(var))
)