[英]Run R script from java
尝试从Java运行R脚本时遇到问题。 我确实在互联网上寻找这个问题的答案,但是没有任何效果。
我已经使用了Rserve和Runtime.getRuntime()。exec(“ Rscript myScript.R”),但它们都不适合我的程序。
请帮我
这是java代码
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);时抛出的错误消息。 上面的代码:
线程“主”中的异常java.io.IOException:无法运行程序“ Rscript”:CreateProcess错误= 2,java.lang.ProcessBuilder.start中的特殊错误是不可思议的,java.lang.Runtime.exec( java.lang.Runtime.exec上的Unknown Source)(algo.Testtest.main(Testtest.java:23)上java.lang.Runtime.exec的Unknown Source)(原因):java.io.IOException:CreateProcess error = 2,在Java.lang.ProcessImpl.create(本机方法)处,java.lang.ProcessImpl.create(本机方法)具有特殊意义(未知源),在java.lang.ProcessImpl.start(未知源)处具有... 5个
对我有用的是使用Renjin解释器下载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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.