首页 文章

从java运行R脚本

提问于
浏览
0

当我尝试从Java运行R脚本时,我遇到了问题 . 我真的在互联网上寻找这个问题的答案,但没有任何作用 .

我已经使用了Rserve和Runtime.getRuntime() . exec(“Rscript myScript.R”),但它们都不能用于我的程序 .

请帮我

this is java code

RConnection c = new RConnection();
                double d[] = c.eval("rnorm(10)").asDoubles();
                org.rosuda.REngine.REXP x0 = c.eval("R.version.string");
                System.out.println(x0.asString());
                Runtime.getRuntime().exec("Rscript TestR.R");

这是我添加Runtime.getRuntime() . exec(“Rscript”rScriptFileName)时抛出的错误消息;到上面的代码:

线程“main”中的异常java.io.IOException:无法运行程序“Rscript”:CreateProcess error = 2,java.lang.Runtime.exec中java.lang.ProcessBuilder.start(未知源)的Lefichierspécifiéestintrouvable来自java.lang.Runtime.exec(未知来源)的java.lang.Testtest.main(Testtest.java:23)中的(未知来源)引起:java.io.IOException: CreateProcess error = 2,来自java.lang.ProcessImpl.的java.lang.ProcessImpl.create(本地方法)中的Lefichierspécifiéestintrouvable . (java.lang.ProcessImpl.start中的未知来源)(未知来源)... 5更多

1 回答

  • 0

    对我有用的是使用人人翻译Download Renjin

    private static final ThreadLocal<ScriptEngine> ENGINE = new ThreadLocal<>();
    
    public static void main(String[] args) {
        ScriptEngine engine = getScriptEngine();
        try {
            System.out.println("myScript");
            engine.eval(new java.io.FileReader("src/myScript.R"));
            engine.eval("Square(19)");
        } catch (FileNotFoundException | NullPointerException | ScriptException e) {
            System.out.println("An exception occured: " + e.getMessage());
            e.printStackTrace();
        }
    }
    
    private static ScriptEngine getScriptEngine() {
        ScriptEngine engine = ENGINE.get();
        if (engine == null) {
            // Create a new ScriptEngine for this thread if one does not exist.
            RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
            engine = factory.getScriptEngine();
            ENGINE.set(engine);
        }
        return engine;
    }
    

相关问题