Почему я не могу цитировать это предложение? - PullRequest
0 голосов
/ 12 сентября 2018

Я читаю некоторые заметки о квази-цитате здесь: https://dplyr.tidyverse.org/articles/programming.html.

После первого чтения я попробовал несколько вещей. В частности, меня смутило:

x <- "foo"
q <- quo(x)

print(x)
<quosure>
expr: ^x
env:  global

Отлично, я создал quosure! Тогда я пойду

!!q

немедленно оценит выражение, производящее «foo». Хотя, естественно, это неправильно!

!!q
Error in !q : invalid argument type

Я не понимаю, почему. Чего мне не хватает?


Продолжительность: Версия R 3.5.1 (2018-07-02) - «Перо-спрей» Copyright (C) 2018 Фонд статистических вычислений R Платформа: x86_64-pc-linux-gnu (64-разрядная версия)

версия пакета rlang: 0.2.1

1 Ответ

0 голосов
/ 12 сентября 2018

Я проверил ваш метод, и вы частично правы.

Вы можете использовать !!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

IЯ использовал UQ и !!, чтобы убедиться, что мой ответ работает последовательно

...