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()
调用中使用了值拼接而不是调用拼接。这应该很快就能解决。
子集化然后绑定按预期工作
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()
调用中使用了值拼接而不是调用拼接。这应该很快就能解决。