Инверсия quo() в dplyr
Используя новый синтаксис quosure для dplyr 0.7.4, я считаю, что должен быть в состоянии сделать что-то вроде !!quo(1)
(ожидается 1
), но возвращает ошибку
library(dplyr)
!!quo(1)
Error in !quo(1) : invalid argument type
Почему это не работает? (Обратите внимание, что в базе R можно сделать eval(quote(1))
, Что такое аналог dplyr?)
... является !!
определяется только внутри функций dplyr?
1 ответ
Решение
!!
определяется только в функциях, которые осведомлены о структуре tidyeval, да. В нормальном коде R это означает два последовательных !
х (логично-нет).
Эквивалент eval
было бы rlang::eval_tidy
:
eval_tidy(quo(42))
# [1] 42