Почему я не могу цитировать это предложение?

Я читаю некоторые заметки о квази-цитате здесь: 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 а также !! чтобы убедиться, что мой ответ работает последовательно

Другие вопросы по тегам