Так что я не могу на всю жизнь понять, что здесь происходит. Предполагалось, что это будет небольшое исследование возможного крайнего случая, но в итоге выяснилось, насколько мало я понимаю оценку R / tidy.
Я хочу понять, почему, когда функция закодирована для доступа к переменной, которую она не определяет в своих аргументах, eval_tidy
не может маскировать переменные, которые она использует.
Рассмотрим следующее, где f
обращается к переменной с именем sup
, которая не передается в качестве аргумента
library(rlang) # I'm using rlang 0.3.0
# Define `sup` globally
sup <- "yes"
f <- function() {
# Access whatever the `sup` variable is
if (sup == "yes") "YES"
else "NO"
}
f()
# 'YES'
q <- quote(f())
eval_tidy(q, c(sup="no"))
# 'YES'
Я попробовал почти все, но я не могу скрыть sup
от f()
.