我有一个Java工作,我需要使用一个外接R上库,该库中使用的功能。 我试图在以下问题提供答案
我怎样才能加载A R脚本到JRI并从Java执行?
问题加载[R自己创建库中的Java / JRI代码
但我仍然得到一个NullPointerException。 任何人都可以指出错误。 谢谢
下面是我使用的代码:
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.RVector;
import org.rosuda.JRI.Rengine;
public class RConnect {
public void processFiles(String[] spectrumData)
{
// new R-engine
Rengine re=new Rengine (new String [] {"--vanilla"}, false, null);
if (!re.waitForR())
{
System.out.println ("Unable to load R");
return;
}
else
System.out.println ("Connected to R");
REXP rexpSetFolder = re.eval("setwd('/home/user/R/x86_64-pc-linux-gnu-library/3.0')");
REXP rexpFolder = re.eval("getwd()");
System.out.println(rexpFolder.asString());
REXP rexpLoad = re.eval("library(PROcess)");
RVector f1 = (re.eval("read.files(spectrumData)").asVector());
System.out.println(f1);
re.end();
}
}
我试图寻找你刚才提及的R包“过程”,但我没有找到它,所以我不能测试你的代码,但一般加入包做工完美的JRI,这里是(使用包“预测”的例子和 “plyr”):
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.RVector;
import org.rosuda.JRI.Rengine;
/**
*
* @author yschellekens
*/
public class StackOverfolw {
private static double[] foreCast;
private static int i;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// new R-engine
Rengine re=new Rengine (new String [] {"--vanilla"}, false, null);
if (!re.waitForR())
{
System.out.println ("Unable to load R");
return;
}
else
System.out.println ("Connected to R");
re.eval("load(file='C:/Users/yschellekens.INTRANET/Desktop/java projects/count_basic.Rda') ", false);
re.eval("library(plyr)");
re.eval("library(forecast)");
re.eval("count_basic<-arrange(count_basic,TKDate)");
re.eval("ts1<-ts(count_basic$click_count,frequency=7)");
re.eval("value<-stl(x=ts1,s.window=7)");
re.eval("fit <- auto.arima(ts1)");
re.eval("fit2<-forecast(fit,h=30)");
re.eval("value3<-as.numeric(fit2$mean)");
REXP testYvalue = re.eval("c(as.numeric(fit2$fitted),as.numeric(fit2$mean))");
foreCast=testYvalue.asDoubleArray();
for (i = 0; i < 10 ; i++) {
System.out.println(foreCast[i]);;}
re.end();
}
}
现在来看看控制台:
运行:连接至R 524.0 597.0 530.0 440.0 406.0 435.0 479.0 523.0 580.0 574.0生成成功(总时间:4秒)
您在R(不是3.0)的早期版本下载包“过程”(我找不到),我的猜测我,如果是这样的情况下,只需重新加载包到您的R 3.0文件夹。