Я хотел бы, чтобы R-скрипты имели функцию main(), которая выполняется в интерактивном режиме. Но функция main() не должна выполняться при поиске файла.Является ли (interactive()) R эквивалентным pythonic "if __name__ ==" __main__ ": main()"?
There is already a question about this и очень хороший ответ предполагает использование функции interactive(). Однако это не работает для меня. У меня недостаточно очков репутации для комментариев или ответов в этом вопросе. Поэтому я снова задаю этот вопрос.
Я пишу это в script_1.r
if(interactive()){
your main code here
}
Если я использую knitr отказаться в HTML или PDF-документ, снабжаем сценарий. Этот код под номером if(interactive())
не будет выполнен. Это хорошо для меня, вот чего я хочу.
Моя проблема заключается в том, что если я source("script_1.r")
от script_2.r
в интерактивном режиме, он все равно будет запускать код под этой частью if(interactive())
.
Чтобы быть ясным, вы хотите, чтобы интерактивный бит выполнялся при использовании knitr, но не при непосредственном источнике сценария? –
Нет. Я не хочу, чтобы бит if (interactive()) выполнялся вообще. Ни при запуске knitr, ни при поиске из другого скрипта. –
На самом деле я нашел проще, я поместил свой код в раздел if (FALSE) {}, и он вообще не выполняется. Большую часть времени это то, что я хочу. –