Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在rpy2中捕获R错误_R_Exception Handling_Rpy2 - Fatal编程技术网

在rpy2中捕获R错误

在rpy2中捕获R错误,r,exception-handling,rpy2,R,Exception Handling,Rpy2,当我使用RStudio时,我可以在运行函数时看到任何错误或警告 但是,当我使用rpy2时,如何捕获警告(允许代码运行)和错误(暂停代码),以便用python以编程方式解析消息?直到R-3.0(当前未发布)之前,默认情况下,警告都会打印到控制台。 从R-3-0开始,它们不再打印,因为R开发人员将以前使用的C函数隐藏起来了(而且他们太忙了,无法记录原因,也无法告诉我们是否可以重新访问该函数) 要将警告作为rpy2对象获取,可以执行以下操作: from rpy2.robjects.packages i

当我使用RStudio时,我可以在运行函数时看到任何错误或警告

但是,当我使用rpy2时,如何捕获警告(允许代码运行)和错误(暂停代码),以便用python以编程方式解析消息?

直到R-3.0(当前未发布)之前,默认情况下,警告都会打印到控制台。 从R-3-0开始,它们不再打印,因为R开发人员将以前使用的C函数隐藏起来了(而且他们太忙了,无法记录原因,也无法告诉我们是否可以重新访问该函数)

要将警告作为rpy2对象获取,可以执行以下操作:

from rpy2.robjects.packages import importr
base = importr('base')
# do things that generate R warnings
base.warnings()

计算R代码时发生的错误会引发
rpy2.rinterface.rrontimeerror
。捕捉这些错误。

@lgautier似乎不是所有的R运行时错误都会生成
rpy2.rinterface.rrontimeerror
s。我得到了以下
>错误:inv_sympd():矩阵似乎是奇异的>错误:chol():未能收敛终止在抛出'std::runtime_error'>what():chol():未能收敛>中止(内核转储)
的实例后调用,这将我完全退出Python。注意,我正在运行的R代码是在一个尝试/除块中。@ DrMisha,这是一个老的答案,但是无论如何,你在R中所具有的错误与C++有关(从代码> STD::RunTimeOrthError < /Cord>)可以看到,并且没有被你正在使用的R库正确捕获。发生这种情况时,
rpy2
几乎不可能正确处理该错误,因为该错误导致R[dump a core]()。希望这有帮助。