Почему я не могу цитировать это предложение?
Я читаю некоторые заметки о квази-цитате здесь: https://dplyr.tidyverse.org/articles/programming.html.
После первого прочтения я попробовал несколько вещей. Одно, в частности, меня смутило:
x <- "foo"
q <- quo(x)
print(x)
<quosure>
expr: ^x
env: global
Отлично, я создала цитату! Тогда я пойму
!!q
сразу оценит выражение, выдающее "foo". Хотя, естественно, это неправильно!
!!q
Error in !q : invalid argument type
Я не понимаю почему. Что мне не хватает?
Выполняется: версия R 3.5.1 (2018-07-02) - "Перо-спрей" Copyright (C) 2018 Платформа R Foundation для статистических вычислений: x86_64-pc-linux-gnu (64-разрядная версия)
версия пакета rlang: 0.2.1
1 ответ
Я проверил ваш метод, и вы частично правы.
Вы можете использовать !!q
, но только в квазицитатной среде.
> !! q
Error in !q : invalid argument type
> UQ(q)
Error: `UQ()` can only be used within a quasiquoted argument
> quo(!! q)
<quosure>
expr: ^x
env: global
> quo(!!q)
<quosure>
expr: ^x
env: global
Я использовал оба UQ
а также !!
чтобы убедиться, что мой ответ работает последовательно