【发布时间】:2017-02-21 12:19:25
【问题描述】:
一个 Python 类通过 rpy2 执行 R 函数,我希望能够在 R 函数生成错误的情况下从 R 捕获回溯。
R 代码是遗留代码,因此修改它会非常冒险;我更愿意在 Python 端做点什么。
以下是 Python 代码当前的样子:
from rpy2.rinterface import RRuntimeError
from rpy2.robjects import DataFrame
from rpy2.robjects.packages import InstalledPackage
class RAdapter(BaseRAdapter):
_module = None # type: InstalledPackage
def call_raw(self, function_name, *args, **kwargs):
# type: (str, tuple, dict) -> DataFrame
"""
Invokes an R function and returns the result as a DataFrame.
"""
try:
return getattr(self._module, function_name)(*args, **kwargs)
except RRuntimeError as e:
# :todo: Capture traceback from R and attach to `e`.
e.context = {'r_traceback': '???'}
raise
...
我应该如何修改call_raw,以便在 R 函数导致错误的情况下捕获来自 R 的回溯?
【问题讨论】:
标签: python-2.7 python-2.x rpy2 traceback