我正在使用Rcpp使用RGui(版本3.4.1)作为用户界面运行C ++代码。我经常对C ++代码进行更改,这些更改可以正确编译,但是在RGui中运行相关程序时会导致错误(例如,搜索超出数组末尾),从而导致RGui崩溃。之所以如此,是因为我必须重新打开RGui,重新打开R脚本(有时会丢失未保存的更改),再次设置工作目录等,这样才能使我重新编译C ++代码并以这种方式运行程序查找问题或测试修订的方法。有时由于我没有解决或绕过该问题,它立即再次崩溃。
是否有某种方法可以更改Rcpp的运行方式,以使RGui返回错误消息而不是在这种情况下崩溃?
答案 0 :(得分:4)
简而言之:
x.at(i,j)
会发出警告。参见http://arma.sourceforge.net/docs.html#element_access 答案 1 :(得分:1)
我实际上不知道有什么方法可以防止这种情况的发生,因为要进行更仔细的编程,并在执行前进行保存。但是做了几次之后,我发现了一种方法来找回未保存的更改(至少在Windows中)。
当您看到提示您重新启动R的弹出窗口时,您无需这样做。您打开任务管理器,右键单击该进程,然后选择“创建转储文件”。在资源管理器中找到此文件,然后使用一些文本编辑器将其打开。
它们很大,并且充满了各种各样的东西,但是如果您使用find函数搜索一些您知道在脚本中存在的字符串,那么您可以找到所有未保存的工作。然后,您可以将其复制并粘贴到另一个文件中进行保存。
如果使用R-studio而不是R-GUI,通常可以更好地照顾未保存的工作。