При запуске R в «пакетном режиме» для флага interactive
установлено значение false, что предотвращает появление любых пользовательских подсказок, которые могли бы прервать процесс в контексте встроенной / пакетной настройки. Видеть:
R -e 'interactive()'
Некоторые удерживаются при использовании Rscript
. Флаг также можно установить вручную с помощью пакета интерактивности. Для проверки мы можем попробовать:
R -e 'install.packages("anything")
Предполагая, что зеркало CRAN еще не установлено, install.packages
не будет отображать какое-либо интерактивное средство выбора зеркала, а вместо этого выдаст ошибку и завершит работу.
Однако я заметил, что команды help
или ?
по-прежнему работают. Например, приведенная ниже команда покажет браузер справки и не продолжит работу, пока я не нажму q.
R -e 'help(lm); 1+2'
Однако при отправке вывода в файл он не отображает интерактивную подсказку и просто выводит полный документ справки в выводе:
R -e 'help(lm); 1+2' > output.txt
Я немного запутался в том, что на самом деле происходит при использовании help
. Почему вы получаете браузер с интерактивной справкой, даже когда R работает в пакетном режиме? Это функция R
или интерфейс Debian / Ubuntu? Существует ли риск того, что R
перестанет отвечать, когда функция help
вызывается внутри, т.е. Rserve, RInside, JRI и т. Д., Из-за того, что R ожидает использования ввода?
1 ответ
Help фактически порождает новый процесс, пейджер, который похож на «меньше»:
> help(lm); 1+2
[1]+ Stopped R -e 'help(lm); 1+2'
$ ps
PID TTY TIME CMD
27735 pts/6 00:00:00 bash
31607 pts/6 00:00:00 R
31615 pts/6 00:00:00 sh
31616 pts/6 00:00:00 pager
31617 pts/6 00:00:00 ps
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат полностью. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.