【发布时间】:2014-03-03 09:11:53
【问题描述】:
当我尝试在 Mac OS 上从 Java Netbeans 运行 R 脚本时遇到问题。我真的在互联网上寻找这个问题的答案,但没有任何效果。
我使用过 Rserve 和 Runtime.getRuntime().exec("Rscript myScript.R"),但它们都不适用于我的程序。
当我使用 Rserve 时,我在 R 控制台上运行 Rserve(args="--no-save"),在 Java 程序上运行 Rconnection.eval("\myscript.R"),当我执行它时,程序继续运行没有任何响应,也没有错误,也没有停止。事实上,当我尝试执行更简单的 R 脚本时,比如计算平均值或类似的东西,它可以工作,但是当我尝试强制 xts/zoo 时间序列中的 data.frame 或只是加载 xts/zoo 库时首先在我的脚本中,程序不会停止运行并且什么也不做。
另一方面,当我尝试执行 "Runtime.getRuntime().exec("Rscript myScript.R")" 就像出现在其他类似帖子中时,没有任何反应。该程序看起来要执行脚本,但它没有给我任何结果,尽管至少停止运行。也许是因为 Mac OS,我无法向 Java 指出 Rscript 或 R.app 路径是什么,我真的不知道。
非常感谢您,希望您能帮助我。
贾维。
文件代码为:
public void Rconnection () {
RConnection c=new RConnection();
System.out.println("INFO : Trying to Connect to R");
c.parseAndEval("source(\"/scriptname.R\")");
System.out.println("Greeting from R:" + result.asString());
c.close();
}
而R脚本是:
EU.df <- read.csv("/myinput.csv",header=T)
EU.xts <- xts(EU.df[,2:5],seq(as.Date("1970-01-02"),len=nrow(EU.df),by="day"))
write.csv(EU.df, file = "/myoutputfile.csv",row.names=FALSE)
可能是因为 R 库的一些问题,或者是因为 MAC OS。
【问题讨论】:
-
我不知道 RScript 是什么,但我认为我们不再使用
Runtime.getRuntime()。我的印象是我们已经转移到ProcessBuilder。其次,您是否尝试过从命令行运行此 RScript?最后,由于我看不到您的代码,您是否同时读取 STDOUT 和 STDERR?可能是您的 RScript 有一些问题,但是您正在从错误的输出流中读取以便能够正确地看到它。 -
该死,这看起来很糟糕!编辑您的问题并将代码放在那里。
-
我尝试通过
library(xts/zoo)和c.eval("library(xts)")调用R脚本中的库,但它也不起作用。 -
为什么你的意思是:“虽然至少停止运行,但没有给我任何结果。”。您的脚本会写入一个硬编码的 csv 文件。你有没有试过看看它是否被创建??!
-
^ 并且:到底是什么问题?你得到的错误是什么?