【发布时间】:2014-11-22 02:50:23
【问题描述】:
当我使用 RStudio 时,我可以在运行函数时看到任何错误或警告。
但是,当我使用 rpy2 时,如何捕获警告(允许代码运行)和错误(使代码停止),以便我可以在 python 中以编程方式解析消息?
【问题讨论】:
标签: r exception-handling rpy2
当我使用 RStudio 时,我可以在运行函数时看到任何错误或警告。
但是,当我使用 rpy2 时,如何捕获警告(允许代码运行)和错误(使代码停止),以便我可以在 python 中以编程方式解析消息?
【问题讨论】:
标签: r exception-handling rpy2
在 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.RRuntimeError。抓住那些。
【讨论】:
rpy2.rinterface.RRuntimeErrors。我得到了以下>error: inv_sympd(): matrix appears to be singular >error: chol(): failed to converge terminate called after throwing an instance of 'std::runtime_error' >what(): chol(): failed to converge >Aborted (core dumped),这让我完全退出了 Python。请注意,我正在运行的 R 代码位于 try/except 块中。
std::runtime_error 可以看出)并且没有被 R 库正确捕获您正在使用。发生这种情况时,rpy2 几乎不可能正确处理错误,因为错误导致 R [转储核心](en.wikipedia.org/wiki/Core_dump)。希望这会有所帮助。