Как устранить ошибку синтаксического анализа Rscript: преждевременный EOF?

Запуск моего рабочего сценария R в командной строке Windows (cmd) с использованием Rscript приводит к ошибке синтаксического анализа (преждевременный EOF).

Когда я запускаю скрипт в RStudio, он компилируется и работает, как и ожидалось.

Я прочитал страницу Rscript в документации R, и я вижу, что проблема должна быть связана с пробелами в самом моем сценарии, которые, вероятно, каким-то образом попадают в консоль cmd во время синтаксического анализа, но это, насколько я понимаю.

Или я должен был что-то сделать с #! упомянутая там функциональность?

Я пытаюсь запустить его в cmd:

Rscript .\start_app.r

Я нахожусь в правильном рабочем каталоге и имею установить папку, содержащую Rscript, в моем окружении.

Сценарий слишком длинный, чтобы делиться им, и я слишком неопытен, чтобы рассказать вам о частях, из-за которых он ломается (иначе меня бы здесь не было), но он полон функций, операторов if и тому подобного, в которых используются фигурные скобки и имеют отступ. Я также часто включаю пустые строки (иногда с отступом) для удобства чтения. Он использует блестящий пакет. Примером может быть:

islocal = nchar(Sys.getenv("LOCAL"))>1 | interactive()
if (islocal){
  source('../../path/app/variables/styling.R')

} else {
  source('./variables/styling.R')
}

Как и в приведенном выше примере, он также включает другой код R, вызываемый через source().

Может ли это как-то попасть в строку cmd и быть неправильно скомпилировано?

Я получаю следующие сообщения:

Error: parse error: premature EOF

                     (right here) ------^
Execution halted
Not enough memory resources are available to process this command.

(Я предполагаю, что второе сообщение не связано с проблемой, но включите его сюда, чтобы быть уверенным.)


person Nibood_the_slightly_advanced    schedule 27.08.2019    source источник
comment
Привет, без полного кода трудно сказать, что вызывает это   -  person Chelmy88    schedule 27.08.2019
comment
Я бы посоветовал сначала использовать двойные кавычки " вместо одинарных ' вокруг строк пути. Я также предлагаю вам взглянуть на этот вопрос, возможно, там есть что-то, что вам поможет.   -  person Compo    schedule 27.08.2019
comment
Как насчет проблемы с памятью в вашем сообщении об ошибке? А как насчет кодировки вашего скрипта? Вы пытались изменить эту кодировку?   -  person MrSmithGoesToWashington    schedule 27.08.2019
comment
Спасибо за предложения. @MrSmithGoesToWashington оказывается, что это как-то связано с кодировкой: stackoverflow.com/questions/1259084/ . Использование «Сохранить с кодировкой» -> ISO-8895-1 (системное значение по умолчанию) решает проблему (даже несмотря на то, что запуск chcp в cmd возвращает кодовую страницу 65001, что соответствует UTF-8), но ломает код при запуске в RStudio. Если вы хотите опубликовать предложение в качестве ответа, я буду рад принять его.   -  person Nibood_the_slightly_advanced    schedule 27.08.2019


Ответы (1)


Как было предложено в комментарии, решение заключалось в изменении кодировки.

Как упомянул сам запросчик, использование «Сохранить с кодировкой -> ISO-8895-1 (Системное значение по умолчанию)» решает проблему.

person MrSmithGoesToWashington    schedule 27.08.2019