Windows 7 で 32 ビット R 3.0.2 と Java jdk1.7.0_45 を使用して、NetBeans 7.4 で実行する JRI をインストールしました。
次のJava関数を使用しています。
import org.rosuda.JRI.Rengine;
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.RList;
void testJRI(){
// Start JRI engine.
String[] Rargs = {"--vanilla"};
Rengine re = new Rengine(Rargs, false, null);
if (!re.waitForR()) {
System.out.println("Cannot load R");
return null;
}
REXP load=re.eval("source('C:\\\\searchPath\\\\nonparametricAnova.r')");
re.end();
return;
}
関数が初めて呼び出されたときは、すべて正常に動作します。しかし、2 回目は変数 load が null で、失敗を示しています。
nonparametricAnova.r R 関数を次の単純なスクリプトに置き換えました。
simple<-function(){
a=1
a
}
これに simple.r という名前を付けて呼び出しました
REXP load=re.eval("source('C:\\\\searchPath\\\\simple.r')");
今、2回目で、それはハングアップします
Rengine re = new Rengine(Rargs, false, null);
私はそれに気づいた
load=re.eval("refClusterMeasurements<-read.csv(\"C:/SearchPath/fileName.csv\", header=TRUE)");
「name.csv」が最小サイズのファイルであっても、2 回目も失敗します。