当你问ESS评估从一个缓冲区(CC,CB,或类似)用户输入和ESS
par(ask=TRUE)
plot(1,1)
plot(2,1)
译员进入一个无限循环以下,因为ESS的说法开始R对话--no-readline的。循环可以用C-g打破,但是有什么办法让解释器真正地请求用户输入吗?
当你问ESS评估从一个缓冲区(CC,CB,或类似)用户输入和ESS
par(ask=TRUE)
plot(1,1)
plot(2,1)
译员进入一个无限循环以下,因为ESS的说法开始R对话--no-readline的。循环可以用C-g打破,但是有什么办法让解释器真正地请求用户输入吗?
(策略从谷歌和RSiteSearches聚集):
你看到提示:“返回砸”在任何您的会话窗口?如果是这样......打。
如果没有,请尝试单击图形窗口。
如果失败了,应该用c-G控制回来。
编辑:另一种策略,诚然不是解决ESS-非交互性的问题:如果你想保持用户输入,然后readlines方法可采用:
input=file("stdin")
print(readLines(input,1))
一种解决方法是编辑ess-r-d.el
和删除R
给出的硬编码--no-runtime
选项,它是最新实现的第127行。
变化
(let* ((r-always-arg
(if (or ess-microsoft-p (eq system-type 'cygwin))
"--ess "
"--no-readline "))
到
(let* ((r-always-arg
(if (or ess-microsoft-p (eq system-type 'cygwin))
"--ess "))
如果有一个编译版本,你必须编译.el
产生和替换二进制文件.elc
。
该文件可能是(该目录的位置取决于您的操作系统)
site-lisp
目录。在emacs(^ X^F)中编辑.el
文件,然后执行M-x byte-compile-file
以生成.elc
。
如果您从整个zip/tar源代码包安装在lisp
目录中。在这种情况下,更改后,执行make
,然后执行make install
。
你当然需要有write
访问.el
和.elc
文件。
如果你觉得不舒服的.el
文件的编辑,你可以直接将其移除(.elc
)和仅使用.el
版本(应该是只有轻微的性能差异)。
提示仅在c-G打开后出现,并且c-G不会从等待用户输入的循环中跳出,它会停止执行剩余的脚本。 – fgregg 2010-12-05 23:42:14
因此,为了清楚起见,会出现一个绘图窗口,尽管在窗口中单击以获得焦点,但您看不到提示? – 2010-12-06 00:45:47