JRI を使用し、Java から R スクリプトを呼び出しています。R スクリプトは整数を返します。以下は、Rスクリプトを呼び出す方法です-
REXP result = rengine.eval("source(\"" + [script name with path] + "\")");
REXP retVal = rengine.eval(getReturnVariable());
以下は、R スクリプトの関連コードです。
retVal<-sum(num1, num2)
return(as.integer(retVal))
呼び出し元の Java コードは、任意の R スクリプトを呼び出すことができる必要があります。スクリプトはさまざまなデータ型を返す可能性があるため、結果を抽出するには戻り値の型を確認する必要があります。
呼び出し元の Java プログラムで「retVal」を確認すると、次の 2 つの属性があることがわかります。
- rtype - 13 に設定 (INTSXP)
- Xt - gettype() によって返されます - 32 に設定されます (XT_ARRAY_INT)
私の質問は - 呼び出しプログラムが見るべき上記のタイプのどれですか?
また、R と Java のデータ型の間のマッピングへのポインタも役立ちます。
次の投稿も見ましたが、上記のクエリに対する実際の解決策を理解できませんでした - call-r-from-java-using-jri-how-to-cast-return-value
よろしく、~Milind