从Java运行R脚本

从Java运行R脚本,java,r,macos,rscript,Java,R,Macos,Rscript,当我试图在Mac OS上从Java Netbeans运行R脚本时,遇到了一个问题。我真的在互联网上寻找这个问题的答案,但什么都不管用 我已经使用了Rserve和Runtime.getRuntime().exec(“Rscript myScript.R”),但它们都不适用于我的程序 当我使用Rserve时,我在R控制台上运行Rserve(args=“--no save”),在Java程序上运行Rconnection.eval(“\myscript.R”),当我执行它时,程序继续运行,没有任何响应,

当我试图在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)
EU.df您试过使用吗?这可能会“阻止”不同于RServe,并给您提供更好的消息

例如:

REngine re = new JRIEngine(new String[] { "--no-save" }, new RCallback(), false);
re.parseAndEval("source(\"/scriptname.R\")");
re.close();

我不知道RScript是什么,但我以为我们不再使用
Runtime.getRuntime()
。我的印象是我们已经转到了
ProcessBuilder
。其次,您是否尝试过从命令行运行此RScript?最后,由于我看不到您的代码,您是否同时从STDOUT和STDERR中读取?可能是您的RScript出现了一些问题,但是您从错误的输出流中读取,以便能够正确地查看它。该死,这看起来很糟糕!编辑您的问题并将代码放在那里。我曾尝试通过
library(xts/zoo)
c.eval(“library(xts)”)
在R脚本中调用库,但它也不起作用。为什么您的意思是:“虽然至少停止运行,但不会给我任何结果。”。您的脚本将写入硬编码的csv文件。您是否尝试过查看它是否已创建还有:到底是什么问题?你得到的错误是什么?