Java JRI:从R引擎获取错误消息
我正在使用R引擎执行大量计算。正如web上的各种教程所指出的,我使用的是的,例如:Java JRI:从R引擎获取错误消息,java,r,rjava,jri,Java,R,Rjava,Jri,我正在使用R引擎执行大量计算。正如web上的各种教程所指出的,我使用的是的,例如: engine.eval(“meanVal=mean(rVector)” 在某个时刻,eval方法开始返回NULL,根据文档,这意味着“出了问题”。但是,我无法在Rengineclass a属性或方法中确定提供错误消息、错误状态或R控制台输出以确定原因的方法。有什么方法可以获得关于可能发生的事情的详细信息吗?实际上,在嵌入错误信息时,从R获取错误信息非常困难。但是,它在R级别提供了更多信息。因此,最简单的方法是用
engine.eval(“meanVal=mean(rVector)”代码>
在某个时刻,eval
方法开始返回NULL
,根据文档,这意味着“出了问题”。但是,我无法在Rengine
class a属性或方法中确定提供错误消息、错误状态或R控制台输出以确定原因的方法。有什么方法可以获得关于可能发生的事情的详细信息吗?实际上,在嵌入错误信息时,从R获取错误信息非常困难。但是,它在R级别提供了更多信息。因此,最简单的方法是用
try(..., silent=TRUE)
或
这样,您就可以通过定期评估将错误返回Java。如果您想真正喜欢,可以使用Rserve::Rserve.eval()
,它也可以返回错误的堆栈跟踪,但需要最新版本的Rserve
包,该包不是Java代码,但在任何情况下,engine.eval()
方法都不会发出异常。正如我在问题中所写的那样,问题的唯一线索是这个方法返回NULL
。确切地说,这就是为什么我指出您希望在R端捕获它-见上文-因为您不能在Java端捕获它,因为除非您提出要求,否则R不会给出它。现在我知道它必须是传递给engine.eval()的代码
待包装;您可能希望编辑您的答案以使其更清楚。在任何情况下,这样我得到的是[NULL]
,而不是NULL
。
tryCatch(..., error=function(e) e)