При запуске 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 ожидает использования ввода?

3
Jeroen Ooms 23 Окт 2012 в 22:43

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
1
Arcymag 23 Окт 2012 в 22:48