我想知道是否有人知道一个好方法让R或ESS停止执行其余代码超出发生错误的点,如果我正在评估一个区域或缓冲区(我只发现了相反的请求)帮助档案).我正在查看R帮助文件,但option(error=stop)
只会停止执行有问题的函数或语句,但不会停止执行它们.谢谢!
如果R/ESS占用了大量的计算时间,以至于您的emacs/ESS对Cc Cc没有响应,您也可以通过从终端发送INTERRUPT信号来保存它.
首先:使用top
或计算出R的processID ps
.(我的是98490然后:
kill -2 98490
发送一个中断信号,你得到你的ESS/Emacs和R会话
根据ESS手册,这应该起作用:
C-c C-c
(comint-interrupt-subjob)Control-C
向ESS进程发送信号。这具有中止当前命令的作用。
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)
您可以查看他的其余配置文件和文档,以查看是否感兴趣。我还没有尝试过,但是希望它对您有用!
查理