3

在“批处理模式”下运行 R 时,该interactive标志设置为 false,这会阻止任何类型的用户提示,这些提示会在嵌入/批处理设置的上下文中中断进程。看:

R -e 'interactive()'

使用时有些保持Rscript也可以使用交互包手动设置该标志。为了测试,我们可以尝试:

R -e 'install.packages("anything")

假设尚未设置 CRAN 镜像,install.packages则不会显示一些交互式镜像选择器,而是抛出错误并退出。

但是,我注意到helpor?命令仍然有效。例如,下面的命令将显示帮助浏览器,并且在我按 q 之前它不会继续。

R -e 'help(lm); 1+2'

但是,将输出发送到文件时,它不会显示交互式提示,而只是将完整的帮助文档转储到输出中:

R -e 'help(lm); 1+2' > output.txt

我现在对使用help. 为什么即使 R 在批处理模式下运行,您也会获得交互式帮助浏览器?这是 Debian/Ubuntu 前端的功能R还是来自 Debian/Ubuntu 前端?由于 R 等待使用输入,在内部调用函数(即 Rserve、RInside、JRI 等)时是否存在R变得无响应的风险?help

4

1 回答 1

1

help 实际上产生了一个新进程,pager,它就像“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
于 2012-10-23T18:48:30.840 回答