[英]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.