网站制作公司深圳,网站建设去哪里找客户,最新的新闻 今天,wordpress手机iOSRserve 是一个基于 TCP/IP 的服务器程序#xff0c;它允许其他语言调用 R 语言。由于 Rserve 采用 C/S (客户端/服务器)的调用方式#xff0c;因此客户端并不需要链接 R 语言库#xff0c;客户端程序与 R 程序可以实现低耦合的目的。为调用 R 语言#xff0c;需要实现一个与…Rserve 是一个基于 TCP/IP 的服务器程序它允许其他语言调用 R 语言。由于 Rserve 采用 C/S (客户端/服务器)的调用方式因此客户端并不需要链接 R 语言库客户端程序与 R 程序可以实现低耦合的目的。为调用 R 语言需要实现一个与 Rserve 通信的客户端程序幸运的是目前常用的语言包括 C/CPHPJava 等都实现提供与 Rserve 通信的客户端程序。本文讲述 Java 语言如何利用 Rserve 实现与 R 语言的通信。安装 Rserve假设 R 的运行环境是 CentOS(CentOS 使用yum install R来安装 R)在 CentOS 我们已经安装好 R。在 Linux 命令行中输入R进入 R 的交互环境然后输入 install.packages(Rserve)接下来就可以安装 Rserve。启动 Rserve启动 Rserve 有两种方式一种是在 R 程序中启动另一种是在命令行中启动。1. R 程序启动 Rserve打开 R 的交互环境输入以下命令library(Rserve)Rserve()执行后Rserve 便启动起来。2. 命令行启动 Rserve也可以直接在命令行中输入R CMD Rserve启动 Rserve。为让 Rserve 支持远程连接可以加入--RS-enable-remote参数R CMD Rserve --RS-enable-remoteJava 调用 R使用 IntelliJ IDEA 创建一个 Maven quickstart 项目然后在 pom.xml 中添加 Java 版本的 Rserve 客户端的依赖org.rosuda.REngineRserve1.8.1然后编写调用 R 的代码。import org.rosuda.REngine.REXP;import org.rosuda.REngine.Rserve.RConnection;import org.rosuda.REngine.Rserve.RserveException;import org.rosuda.REngine.REXPMismatchException;public class RserveDemo {public static void main ( String[] args ) throws RserveException, REXPMismatchException{RserveDemo rserveDemo new RserveDemo();rserveDemo.callRserve();}private void callRserve() throws RserveException, REXPMismatchException {// 连接 RserveRConnection c new RConnection(120.78.80.23);// 输出 R 的版本REXP x c.eval(R.version.string);System.out.println(x.asString());// 获取10个随机数字double[] arr c.eval(rnorm(10)).asDoubles();for (double a : arr) {System.out.print(a ,);}System.out.println();// 调用 R 源文件c.eval(source(/home/R/add.R));int sum c.eval(myAdd(1, 2)).asInteger();System.out.println(sum);}}在上述代码中我们首先创建了与 Rserve 的连接。由于 Java 代码与 Rserve 不在同一台机器所以我们指定了 Rserve 的机器 IP 地址。接下来我们调用了 R 语言的一些方法包括输出 R 语言的版本获取10个随机数字。最后我们演示了如何调用 R 语言源代码。在 Linux 平台我们先创建一个 add.R 的文件然后编写 R 代码myAdd sum return (sum)}add.R 源代码放置在目录 /home/R 下。R 语言中使用source(/home/R/add.R)可以执行源代码在 Java 代码中我们先执行 add.R 源代码接下来调用了myAdd()函数。执行以上代码输出R version 3.5.0 (2018-04-23)-2.533623370009491,0.7961512738732901,0.7122860585280386,-0.16063583146722446,-0.598315148752494,0.09854836382399271,-1.0914493041810422,-1.5425930835313806,0.584390936738569,0.35687345246533786,3参考资料