Rcaller简单代码 - 加载Runiversal时出错

时间:2014-02-02 18:56:06

标签: java r rcaller

我有以下使用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:

2 个答案:

答案 0 :(得分:0)

R从库加载包。如果在Java下启动的R进程未搜索您安装Runiversal软件包的库,则可能会导致您看到错误消息。

那么:安装Runiversal软件包的目录路径(即库)是什么?可能与此相关的是用户安装R包的内容,以及运行Java代码的用户。

答案 1 :(得分:0)

2.2版本的RCaller库不需要R包Runiversal。包中实现了R到XML转换器的紧凑版本。试一试here