首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从java调用R语言/脚本

从java调用R语言/脚本
EN

Stack Overflow用户
提问于 2012-05-29 14:29:50
回答 2查看 539关注 0票数 2

我们如何从java调用R语言/R脚本?基本上,我需要用java来包装R脚本。

  1. 数据将提供给java层say setData(double[]),然后将其发送给R脚本--让我们说setDataR(double [])方法。
  2. R脚本将执行一些计算,比如调用方法double[] computeR()。
  3. Java程序将通过调用double[] getData()获得计算结果,后者反过来委托R脚本获取计算数据。

如何由JRI、Rserv、Rcaller来执行?我没有看到调用Rscript方法的任何方法?请寄样品。它应该模拟JNI (java,C++)调用。

  1. 在jvm中,我认为多线程不能调用R脚本吗?附近有工作吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-03-22 18:31:04

使用Java中的R最简单的方法是使用Runtime.exec(""),获取响应并解析它。关于如何运行本机指令的一个典型示例是:

代码语言:javascript
复制
Process p = Runtime.getRuntime().exec("ls");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

从这里,您可以读取并处理输出到缓冲到stdInput中的标准输出的结果。

票数 0
EN

Stack Overflow用户

发布于 2014-04-13 15:08:29

RCaller完全可以做你想做的事。假设您有一个双数组'a‘,定义为

代码语言:javascript
复制
double[] a = new double[] {1.0, 2.0, 3.0};

你想要计算平均值,中位数和标准差值。创建RCaller的新实例

代码语言:javascript
复制
RCaller caller = new RCaller();
Globals.detect_current_rscript();
caller.setRscriptExecutable(Globals.Rscript_current);

RCode code = new RCode();


code.addDoubleMatrix("a", a);
code.addRCode("s <- list(mean=mean(a), median=median(a), sd=sd(a))");

caller.setRCode(code);

caller.runAndReturnResult("s");

double mean = caller.getParser().getAsDoubleArray("mean")[0];
double median = caller.getParser().getAsDoubleArray("median")[0];
double sd = caller.getParser().getAsDoubleArray("sd")[0];

变量中位数保存从R脚本返回的值2.0。有关详细信息,请访问页面这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10801207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档