我有以下使用Rcaller的Java代码。
RCaller caller = new RCaller();
RCode code = new RCode();
caller.setRscriptExecutable("/usr/bin/Rscript");
code.addRCode("install.packages(\"bbmle\")");
caller.redirectROutputToConsole();
caller.runOnly();
基本上,我正在尝试运行安装R包的Java代码(因为稍后我将在Java中运行需要此包的R代码)。
当我运行此代码时,我在Java中获得以下输出
Error:Loading required package: Runiversal
但是,我的Mac上有Runiversal
个包。这意味着什么,以及为什么我实际上没有看到R
方法的任何install.packages
输出,这通常是非常冗长的?
更新:我应该注意,即使是如下的简单代码也会导致相同的错误:
code.addRCode("x = c(1,2,3)");
code.addRCode("y = c(2,3,5");
code.addRCode("x+y");
caller.redirectROutputToConsole();
caller.runOnly();
更新:我还应该提到以下效果很好:
StringBuffer allCode = readFile("temp.R");
code.setCode(allCode);
double[] xvector = new double[]{1,3,5,3,2,4,5,6,7,8,9,21,22,25,27,25,34,39,31};
double[] yvector = new double[]{6,7,5,6,5,6,6,7,6,8,9,21,20,19,23,24,29,38,30};
code.addDoubleArray("X",xvector);
code.addDoubleArray("Y",yvector);
code.addRCode("fun(X,Y)");
temp.R:
fun = function(x,y) {
return(lm(y~x))
}
Java输出:
Output:
Output:Call:
Output:lm(formula = y ~ x)
Output:
Output:Coefficients:
Output:(Intercept) x
Output: 2.445 0.825
Output:
答案 0 :(得分:0)
R从库加载包。如果在Java下启动的R进程未搜索您安装Runiversal软件包的库,则可能会导致您看到错误消息。
那么:安装Runiversal软件包的目录路径(即库)是什么?可能与此相关的是用户安装R包的内容,以及运行Java代码的用户。
答案 1 :(得分:0)
2.2版本的RCaller库不需要R包Runiversal。包中实现了R到XML转换器的紧凑版本。试一试here