R 错误时强制停止或停止

R 错误时强制停止或停止,r,emacs,ess,R,Emacs,Ess,我想知道是否有人知道一种好方法,可以让R或ESS在我评估某个区域或缓冲区时停止执行超出错误发生点的其余代码(我在帮助档案中只找到了相反的请求)。我在R帮助文件中查找,但是选项(error=stop)只会停止执行有问题的函数或语句,而不会停止后面的函数或语句。谢谢 打破 只会让你脱离循环 ?试试看 允许您设置可能失败并正常恢复的代码。,这应该可以: C-C-C(通信中断子对象) 向ESS进程发送控制-C信号。这具有中止当前命令的效果 John Fox有一个网站,提供ESS的配置。在其中,他具有以下

我想知道是否有人知道一种好方法,可以让R或ESS在我评估某个区域或缓冲区时停止执行超出错误发生点的其余代码(我在帮助档案中只找到了相反的请求)。我在R帮助文件中查找,但是
选项(error=stop)
只会停止执行有问题的函数或语句,而不会停止后面的函数或语句。谢谢

打破

只会让你脱离循环

?试试看

允许您设置可能失败并正常恢复的代码。

,这应该可以:
C-C-C
(通信中断子对象) 向ESS进程发送
控制-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)
您可以查看他的其他配置文件和文档,看看您是否感兴趣。我还没有试过,但我希望它对你有用


Charlie

如果R/ESS占用了太多的计算时间,以至于您的emacs/ESS对C-C-C没有响应,您也可以通过从终端发送中断信号来保存它

首先:使用
top
ps
计算R的进程ID。(我的是98490 然后:
kill-298490

这会发送一个中断信号,您可以恢复ESS/Emacs和R会话

谢谢,但在交互工作时,我不想在try()或tryCatch()中包装行或区域每一次,但我想从技术上来说都可以…嗨,跛脚的Lambda。你在这期间找到解决问题的方法了吗?谢谢你Charlie-我熟悉C-C C-C,但这是为了手动停止正在进行的进程,而不考虑错误(据我所知).我可能会考虑修改eval region或eval buffer,以便在发生错误时调用此函数。。。