R разобрать со скобкой - PullRequest
0 голосов
/ 30 марта 2020

Я хочу проанализировать следующее (т.е. инициализировать эту функцию, строка / параметры которой были созданы динамически), но есть проблема с квадратными скобками (Ошибка при разборе: неожиданный символ). Есть ли способ решить эту проблему?

parse(text="NAFC_page(label=\"quiet_question\", prompt=\"htmltools::HTML('<p>Are you in a quiet environment?</p>'), choices = \"c(Yes, No)\", \", save_answer = FALSE )")

1 Ответ

1 голос
/ 30 марта 2020

Я не знаю, что такое NAFC_page, но один из способов решения этой проблемы - заменить parse на cat, а затем посмотреть на него с подсветкой кода (например, с помощью механизма lang-r SO). ).

cat("NAFC_page(label=\"quiet_question\", prompt=\"htmltools::HTML('<p>Are you in a quiet environment?</p>'), choices = \"c(Yes, No)\", \", save_answer = FALSE )", "\n")

Поскольку вывод, который он производит, обычно представляет собой одну строку, требующую горизонтальной прокрутки, я собираюсь вставить две строки, чтобы сохранить все это видимым на «обычном» экране браузера (не обязательно для мобильных устройств, извините). Это производит:

NAFC_page(label="quiet_question",
 prompt="htmltools::HTML('<p>Are you in a quiet environment?</p>'),
 choices = "c(Yes, No)", ", save_answer = FALSE ) 

Используя подсветку кода SO, первое, что бросается в глаза, это то, что htmltools::HTML помечен как строка. Давайте удалим \" перед ним и посмотрим, что еще мы увидим. (cat 'ed снова, просто показывая вывод.)

NAFC_page(label="quiet_question",
 prompt=htmltools::HTML('<p>Are you in a quiet environment?</p>'),
 choices = "c(Yes, No)", ", save_answer = FALSE ) 

Хорошо, теперь я вижу, что \"c(Yes, No)\" помечен как строка, где я обычно ожидал бы, что это будет вектор c("Yes", "No"). Снова:

NAFC_page(label="quiet_question",
 prompt=htmltools::HTML('<p>Are you in a quiet environment?</p>'),
 choices = c("Yes", "No"), ", save_answer = FALSE ) 

Теперь мы видим, что последний аргумент save_answer= (и фактически оставшаяся часть строки) является строкой. Давайте удалим случайную кавычку, которую мы видим там:

NAFC_page(label="quiet_question",
 prompt=htmltools::HTML('<p>Are you in a quiet environment?</p>'),
 choices = c("Yes", "No"), save_answer = FALSE )

Это выглядит намного лучше, и, вероятно, также анализирует / оценивает лучше.

Отсюда, мы должны иметь возможность поместить это вернитесь на ваш parse вызов:

parse(text="NAFC_page(label=\"quiet_question\", prompt=htmltools::HTML('<p>Are you in a quiet environment?</p>'), choices = c(\"Yes\", \"No\"), save_answer = FALSE )")

В случае, если часть с подсветкой синтаксиса использует изменения, вот скриншоты для каждого этапа в порядке.

syntax-highlighting, stage 1

syntax-highlighting, stage 2

syntax-highlighting, stage 3

syntax-highlighting, stage 4

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