在“批处理模式”下运行R时,interactive
标志设置为false,这样可以防止任何类型的用户提示在嵌入/批处理设置的上下文中中断该进程。参见:
R -e 'interactive()'
使用Rscript
时有些成立。也可以使用interactivity包手动设置该标志。为了测试,我们可以尝试:
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等待使用输入,当R
函数被调用时,help
是否存在风险{> 1}},即Rserve,Rnside,JRI等?
答案 0 :(得分:1)
帮助实际上产生了一个新的进程,寻呼机,就像“少”:
> 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