Инверсия 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
Другие вопросы по тегам