R интерактивный и пакетный режим и браузер heIp

При запуске R в "пакетном режиме", interactive Параметр flag имеет значение 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 порождает новый процесс, пейджер, который похож на "less":

> 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
Другие вопросы по тегам