我想知道是否有人知道让R或ESS停止执行其余代码的好方法,如果我正在评估某个区域或缓冲区(我只发现相反的情况)请求在帮助档案中)。我在查看R帮助文件,但option(error=stop)
只会停止执行有问题的函数或语句,而不会停止执行它们。谢谢!
答案 0 :(得分:12)
如果R / ESS占用的计算时间太长,以至于您的emacs / ESS无法响应C-c C-c,您也可以通过从终端发送INTERRUPT信号来保存它。
首先:使用top
或ps
计算R的processID。 (我的是98490
然后:
kill -2 98490
这会发送一个中断信号,然后重新启动ESS / Emacs和R会话
答案 1 :(得分:5)
According to the ESS manual,这应该有效:
C-c C-c
(comint-interrupt-subjob)
向ESS进程发送Control-C
信号。这具有中止当前命令的效果。
John Fox有一个网站,他为ESS提供配置。在其中,他有这个功能:
(defun stop-R ()
"Interrupt R process in lower window."
(interactive)
(select-window win2)
(comint-interrupt-subjob)
(select-window win1))
您应该能够使用以下方法将此功能添加到XEmacs的菜单中:
(defun R-menu ()
"Hook to install R menu and sub-menus"
(add-menu-item '("ESS" "R") "Interrupt computation" 'stop-R
)
)
(add-hook 'ess-mode-hook 'R-menu)
您可以查看其余的配置文件和文档,看看它是否让您感兴趣。我还没试过,但我希望它适合你!
查理
答案 2 :(得分:2)
?断裂
只会让你失控。
?试
允许您设置可能失败并正常恢复的代码。