我在尝试从Java Netbeans在Mac OS上运行R脚本时遇到了问题。我在网上寻找了解决方法,但是没有任何有效的方法解决我的问题。
我已经尝试使用Rserve和Runtime.getRuntime().exec("Rscript myScript.R"),但两个方法都不能正常运行我的程序。
当我使用Rserve时,在R控制台上运行Rserve(args="--no-save"),在Java程序中运行Rconnection.eval("\myscript.R"),然后执行程序时,程序会一直运行而没有任何响应,也没有出现错误和停止。事实上,当我尝试执行更简单的R脚本,例如计算平均值或类似的操作时,它可以正常工作。但是,当我尝试将data.frame转换为xts/zoo时间序列或仅在我的脚本中首先加载xts/zoo库时,程序就不会停止运行并且不会有任何输出。
另一方面,当我像其他类似文章中那样尝试执行"Runtime.getRuntime().exec("Rscript myScript.R")"时,什么也不会发生。虽然程序似乎正在执行脚本,但它没有给我任何结果,至少停止运行了。可能是因为Mac OS的原因,我无法告诉Java Rscript或R.app的路径,我不是很确定。
非常感谢您能帮助我。
Javi.
文件代码如下:
也许是因为R库出现了一些问题或者是由于MAC OS的原因。
我已经尝试使用Rserve和Runtime.getRuntime().exec("Rscript myScript.R"),但两个方法都不能正常运行我的程序。
当我使用Rserve时,在R控制台上运行Rserve(args="--no-save"),在Java程序中运行Rconnection.eval("\myscript.R"),然后执行程序时,程序会一直运行而没有任何响应,也没有出现错误和停止。事实上,当我尝试执行更简单的R脚本,例如计算平均值或类似的操作时,它可以正常工作。但是,当我尝试将data.frame转换为xts/zoo时间序列或仅在我的脚本中首先加载xts/zoo库时,程序就不会停止运行并且不会有任何输出。
另一方面,当我像其他类似文章中那样尝试执行"Runtime.getRuntime().exec("Rscript myScript.R")"时,什么也不会发生。虽然程序似乎正在执行脚本,但它没有给我任何结果,至少停止运行了。可能是因为Mac OS的原因,我无法告诉Java Rscript或R.app的路径,我不是很确定。
非常感谢您能帮助我。
Javi.
文件代码如下:
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的原因。
Runtime.getRuntime()
了。我印象中我们已经转向使用ProcessBuilder
。其次,你尝试过从命令行运行这个RScript吗?最后,由于我看不到你的代码,你是否同时读取了STDOUT和STDERR?可能是你的RScript出了一些问题,但你正在读取错误的输出流以便能够正确地查看它。 - CodeChimplibrary(xts/zoo)
和c.eval("library(xts)")
在 R 脚本中调用库,但都没有起作用。 - JaviMartinez