Использование строки со специальными символами с помощью quo () в пакете rlang - PullRequest
0 голосов
/ 03 мая 2018

У меня есть две переменные, а и б. Я пытаюсь вычислить a-b, используя выражение с пакетом rlang. кво (а-б) возвращается, как и ожидалось:

<quosure: global>
~a - b

Однако у меня есть строки a и b. Поэтому я попытался: quo (!! sym ("a-b")), что привело к

<quosure: global>
~`a-b` #(note the '')

Итак, вопрос в том, почему я получаю ~ a-b, а не ~ a-b. Как я могу просто получить ~ a-b. Обратите внимание, что quo (!! sym ("a")) возвращается, как и ожидалось:

<quosure: global>
~a

Так что, похоже, есть проблема со знаком - (то же самое будет происходить с *). Это связано с некоторыми специальными символами / нестандартными проблемами оценки? Как я могу решить это?

1 Ответ

0 голосов
/ 03 мая 2018

Использование parse_expr ...

library(rlang)
q0 <- quo(a - b)
q1 <- quo(!!parse_expr("a - b"))
identical(q0, q1)
# [1] TRUE

... или parse_quo:

q2 <- parse_quo("a - b", global_env())
identical(q0, q2)
# [1] TRUE

Смотрите обсуждение здесь: https://github.com/r-lib/rlang/issues/116

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...