R выполняет код в функции, когда есть синтаксическая ошибка и функция не вызывается явно - PullRequest
0 голосов
/ 22 октября 2018

Это интересно.Я на CentOS 6.9, R-3.4.2.У меня есть код, tmp.R:

main<-function(){
    a = 9
    print(a) xyz
    print("Should never get here")
}

Когда я запускаю это, Rscript tmp.R, я получаю

Error: unexpected symbol in:
"    a = 9
    print(a) xyz"
No traceback available
[1] "Should never get here"
Error: unexpected '}' in "}"
No traceback available

Это довольно запутанно, потому что я никогда на самом деле называется main().Фактически, если я удаляю синтаксическую ошибку (3-я строка становится print(a)), и я запускаю ее, вывод не производится.Это ожидаемое поведение в моей голове.

ВОПРОС : Почему R выполняет код в скрипте, когда возникает синтаксическая ошибка, даже если код явно не вызывается (!)?

РЕДАКТИРОВАТЬ : Оказывается, такое поведение, по-видимому, связано с установкой options(error=traceback) в моем .Rprofile.Тем не менее, это нежелательное поведение.Тем не менее, было бы желательно иметь возможность получать трассировки в интерактивном режиме и не выполнять это странное выполнение кода в неинтерактивном режиме.

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