从java调用R语言/脚本
我们如何从java调用R语言/R脚本?基本上我需要java类的R脚本包装器 数据将被提供给java层,比如方法setDatadouble[],它将依次发送到R脚本——比如setDataRdouble[]方法 R脚本将执行一些计算,比如调用方法double[]计算机 Java程序将通过调用double[]getData来获得计算结果,而double[]getData反过来又委托R脚本来获得计算数据 JRI、Rserv、Rcaller如何执行此操作?我看不到任何调用Rscript方法的方法?请寄样品。它应该是JNIjava、C++调用的模拟。 在jvm中,我是否认为多个线程不能正确调用R脚本?有工作吗?从java调用R语言/脚本,java,r,rserve,jri,rcaller,Java,R,Rserve,Jri,Rcaller,我们如何从java调用R语言/R脚本?基本上我需要java类的R脚本包装器 数据将被提供给java层,比如方法setDatadouble[],它将依次发送到R脚本——比如setDataRdouble[]方法 R脚本将执行一些计算,比如调用方法double[]计算机 Java程序将通过调用double[]getData来获得计算结果,而double[]getData反过来又委托R脚本来获得计算数据 JRI、Rserv、Rcaller如何执行此操作?我看不到任何调用Rscript方法的方法?请寄样品
感谢从Java使用R最简单的方法是使用Runtime.exec,获取响应并对其进行解析。关于如何运行本机指令的典型示例如下:
Process p = Runtime.getRuntime().exec("ls");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
从这里,您可以读取并处理打印到标准输出的结果,并将其缓冲到stdInput中。从Java使用R最简单的方法是使用Runtime.exec,获取响应并对其进行解析。关于如何运行本机指令的典型示例如下:
Process p = Runtime.getRuntime().exec("ls");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
从这里,您可以读取并处理打印到标准输出的结果,并将其缓冲到标准输入中。RCaller完全按照您的要求进行操作。假设有一个双数组“a”,其定义为
double[] a = new double[] {1.0, 2.0, 3.0};
你需要计算平均值、中值和标准偏差值。创建RCaller的新实例
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。有关详细信息,请访问页面r Caller完全按照您的要求操作。假设有一个双数组“a”,其定义为
double[] a = new double[] {1.0, 2.0, 3.0};
你需要计算平均值、中值和标准偏差值。创建RCaller的新实例
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。有关详细信息,请访问页面此操作需要额外的字符串分析过程,该过程已由RCaller处理。此操作需要额外的字符串分析过程,该过程已由RCaller处理。