2017-02-20 4 views
0

JRIを使用して、Rエンジンを使用していくつかの計算を実行しています。私はRengine class、例えばのeval 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ではありません。 eval() 'メソッドは例外を発行していません。私が質問に書いたように、問題の唯一の手がかりは、このメソッドが 'NULL'を返すことです。 –

+0

これは、あなたがR側でそれをキャッチしたいと指摘していた理由です。上記を参照してください.Rがあなたに質問しない限り、あなたにそれを与えないので、Java側ではできません。 –

+0

これはラップするには 'engine.eval()'に渡されるコードでなければならないことを理解しました。あなたはそれをより明確にするために答えを編集したいかもしれません。いずれにせよ、このようにして、私は 'NULL'の代わりに' [NULL] 'を得ます。 –

関連する問題