Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java调用R语言/脚本_Java_R_Rserve_Jri_Rcaller - Fatal编程技术网

从java调用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语言/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最简单的方法是使用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处理。