2017-02-20 38 views
0

我正在使用JRI來使用R引擎執行大量計算。由於在網絡中的各種教程指出,有我使用的Rengine classeval method,如:JRI:從R引擎獲取錯誤消息

engine.eval("meanVal=mean(rVector)");

在某一點上eval方法開始返回NULL,其中根據文檔的意思是「出事了」。但是,在Rengine類中,我無法確定將提供錯誤消息,錯誤狀態或R控制檯輸出以識別原因的屬性或方法。有什麼方法可以獲得關於可能發生什麼的詳細信息?

回答

0

嵌入它時,實際上很難從R中獲取錯誤信息。但是,它確實在R級提供了更多信息。因此,最簡單的方法是包裝你的代碼

try(..., silent=TRUE) 

tryCatch(..., error=function(e) e) 

,這樣你通過定期評估得到錯誤回Java。如果你想獲得真正看中的,您可以使用Rserve::Rserve.eval()也可以在錯誤返回堆棧跟蹤,但需要從http://rforge.net/Rserve

+0

該代碼是不是Java的最新版本Rserve包,但在任何情況下,'引擎。 eval()方法不會發出異常。正如我在問題中所寫的,唯一的問題是這個方法返回NULL。 –

+0

準確地說,這就是爲什麼我指出你想在R方面看到它 - 見上面 - 因爲你不能在Java方面,因爲R不會給你,除非你問。 –

+0

現在我明白它必須是傳遞給'engine.eval()'來包裝的代碼;你可能希望編輯你的答案,使其更清晰。無論如何,這種方式我得到'[NULL]'而不是'NULL'。 –