从Java执行r脚本:加载库

时间:2015-02-11 13:29:07

标签: java r

我想用rgp做一个符号回归任务。我正在使用ScriptEngineEx从Java执行R脚本。 R代码完美地起作用于Rsudio。然而,就像我尝试在java中加载库rgp一样,我收到一条错误消息“没有名为'rgp'的包”。

我尝试的第一件事是对lib()函数使用lib.loc参数,但得到了相同的错误信息,即找不到rgp。

我尝试的第二件事是从rgp(emoa(也没有工作)和操作(成功))的同一目录中加载其他库。我无法理解为什么它适用于某些软件包而不适用于同一目录中的其他软件包

这是我的代码:

import org.rosuda.jrs.ScriptEngineEx;
import javax.script.ScriptEngineManager;
import javax.script.Invocable;
import javax.script.ScriptException;

public class RScript {

public static void main(String[] args) throws NoSuchMethodException, ScriptException {
    // TODO Auto-generated method stub
    ScriptEngineManager manager = new ScriptEngineManager();
      ScriptEngineEx engine = (ScriptEngineEx) manager.getEngineByExtension("R");
    engine.eval("library(manipulate)");
    engine.eval("library(emoa)");
    engine.eval("library(rgp)");
    engine.eval("library(rgp, lib.loc =.libPaths())");
      engine.close();
}

我收到的错误消息:

Error in library(emoa) : there is no package called 'emoa'
Error in library(rgp) : there is no package called 'rgp'
Error in library(rgp, lib.loc = .libPaths()) :
there is no package called 'rgp'

PS: rgp,manipulate和emoa安装在目录中:

C:\Users\userName\Documents\R\win-library\3.1

.libpaths()的值是: [1] "C:/Users/userName/Documents/R/win-library/3.1" [2] "C:/Program Files/R/R-3.1.2/library"

两个stmts:library(rgp)library(rgp, lib.loc =.libPaths())从rStuido工作正常。 我希望你可以指导我进一步检查,以了解为什么加载对某些人而不是其他库认为它们安装在.libPaths()中的相同位置。任何关于如何加载rgp的提示都将非常感激。

0 个答案:

没有答案