我令人惊讶的新体验dplyr
是,如果我对tibble
s 进行涉及取消引号(!!x
或rlang::UQ(x)
)的各种操作,然后将它们分配给变量并最终将它们合并,bind_rows
一切正常;而嵌入的相同操作bind_rows
会因一些错误而失败。更令人困惑的是,错误并不总是相同的:我得到了quote(x) must resolve to integer column positions, not formula
(this is with select
and mutate
)和Column quote(x) is of unsupported type quoted call
(this with group_by
)。我想知道这种行为背后的原因是什么,我做错了什么还是这是一个错误?
require(dplyr)
f1 <- function(d, var){
qvar <- enquo(var)
d1 <- d %>% group_by(!!qvar) %>% summarize_all(first)
d2 <- d %>% group_by(!!qvar) %>% summarize_all(first)
bind_rows(d1, d2)
}
f2 <- function(d, var){
qvar <- enquo(var)
bind_rows(
d %>% group_by(!!qvar) %>% summarize_all(first),
d %>% group_by(!!qvar) %>% summarize_all(first)
)
}
d <- data.frame(
x = c(rep('a', 3), rep('b', 3)),
y = seq(6)
)
f1(d, x) # works
f2(d, x) # fails