J'essaie toujours de comprendre les quosures dans R, mais je ne comprends pas pourquoi la substitution dans la fonction ci-dessous échoue.Comment utiliser les variables de rlang :: UQS dans une fonction personnalisée?
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)
Il semble que l'appel my.toggle(rlang::UQS(fn.args))
devrait être équivalent à my.toggle(toggle = T)
(et, en fait, c'est ce que vous obtenez lorsque vous enveloppez l'appel de fonction dans quo
), mais la fonction n'exécute pas correctement. Qu'est-ce que je fais mal?