在旧版本的R版本2.9中,我能够使用rterm.exe从批处理运行R程序,并创建一个用户可以来回滚动并查看图形的图形窗口.我能够使用一些R代码来做到这一点:
kbd <- function(key) { if (key == "q") { "Quit" } else NULL } getGraphicsEvent(" ",onKeybd = kbd)
这使得图形查看器打开,直到用户按下“q”键.在较新版本的R中,似乎由于这是从批处理(非交互式使用Rterm.exe)启动的,所以键值始终为空,并且图形窗口只会闪烁并关闭.我的问题是,如果有任何方式我可以以某种方式说服R系统,我正在运行准交互式会话,并获取getGraphicsEvent的行为不立即返回NULL?
您可以通过启动Rterm选项来伪造一个将被检测为非交互式的交互式会话
--ess
在Windows上,或
--interactive
在Unix上.
这可能会导致其他问题,因为所有功能将会将会话视为交互式.您不能在会话中间更改该标志,因为它会影响与I / O相关的许多事项.