我仍在尝试理解 R 中的 quosures,但我不明白为什么下面函数中的替换会失败。
my.toggle <- function(toggle) {
if (toggle) {
print("yes")
} else {
print("no")
}
}
fn.args <- list(toggle = T)
my.toggle(rlang::UQS(fn.args)) # fails
# Error in if (toggle) { : argument is not interpretable as logical
rlang::quo(my.toggle(rlang::UQS(fn.args))) # but this is the right function call
# <quosure: global>
# ~my.toggle(toggle = TRUE)
似乎调用my.toggle(rlang::UQS(fn.args))
应该等效于my.toggle(toggle = T)
(实际上,这就是将函数调用包装在 中时得到的quo
),但是该函数无法正确执行。我究竟做错了什么?