文档章节

在Java中使用Rserve调用R

zh119893
 zh119893
发布于 2014/05/14 21:58
字数 617
阅读 1542
收藏 7

昨天跟老师一起讨论之后得到了新的任务,讨论没得到什么结果,又收到了新的学习任务——在Java中调用R使用Rserve。

先介绍一下R

R是一个用于统计计算和统计制图的优秀工具。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输入,可实现分支、循环,用户可自定义功能 。
而Java语言是目前最流行的语言,所以今天尝试通过java来调用R函数为下面通过调用数学函数实现业务功能做基础。
目前我在32位windows7上做测试。
1. 首先需要下载R的windows安装程序,地址为http://cran.r-project.org/然后安装就可以了。
2. 安装Rserve,可以通过R界面中的命令行输入:install.packages("Rserve")或者在R界面上选择:程序包->安装程序包,然后找到Rserve进行安装。

选择China(Hefei)服务器速度较快,China(BeiJing1)没有速度,安装完成之后就ok啦!

3. 启动Rserve, R界面中的命令行中输入:library(Rserve)来加载Rserve,然后输入Rserve()进行启动服务。
到此Rserve已经配置并启动好,下面轮到Java程序调用了。
1. 下载Rserve提供的jar包,打开http://www.rforge.net/Rserve/files/,下载REngine.jarRserveEngine.jar,然后放到自己的项目中,并引入。
2. 编辑代码如下:

[java]  view plain copy
  1. import org.rosuda.REngine.REXPMismatchException;  
  2. import org.rosuda.REngine.REngineException;  
  3. import org.rosuda.REngine.Rserve.*;  
  4. import org.rosuda.REngine.Rserve.RserveException;  
  5. import org.slf4j.Logger;  
  6. import org.slf4j.LoggerFactory;  
  7.   
  8. import rserver.function.RService;  
  9.   
  10. public class CallR {  
  11.     private RService rService;  
  12.     private static final Logger logger = LoggerFactory.getLogger(CallR.class);  
  13.     public CallR() throws REXPMismatchException, REngineException  
  14.     {   
  15.         rService = new RService();  
  16.         RConnection re = rService.startTransaction(); //开始独占工作空间  
  17.         double[] xx = {1,2,3,4,5,6,7,8,9,10}; //生成两个数组  
  18.         double[] yy = {1,2,3,4,5,6,7,8,9,10};  
  19.         try {  
  20.         re.assign("x", xx); //给R的变量赋值  
  21.         re.assign("y", yy);  
  22.         System.out.println("jpeg('D:\\\\test.jpg')");  
  23.         re.eval("jpeg('D:\\\\test.jpg')");  
  24.         re.eval("qqplot(x, y)");//绘图  
  25.         re.eval("dev.off()");  
  26.     
  27.         } catch (RserveException e) {  
  28.             logger.warn("Failed to create temp file", e);  
  29.         } finally {  
  30.        this.rService.endTransaction(); //退出时一定要关闭此工作空间  
  31.     }  
  32.     }  
  33.      public static void main(String args[]) throws REXPMismatchException, REngineException  
  34.        {  new CallR();  }  
  35. }  

代码运行之后在D盘下就会生成一个jpg图片如下图所示,至此java连接R 的测试告一段落,这也是在为以后的项目中的模型分析做铺垫。


本文转载自:http://blog.csdn.net/ryl219362/article/details/9449567

zh119893

zh119893

粉丝 52
博文 9
码字总数 2056
作品 0
武汉
程序员
私信 提问
Rserve与Java的跨平台通信

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。 R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言...

zh119893
2014/04/20
1K
2
Rsession让Java调用R更简单

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已...

zh119893
2014/05/04
1K
4
How to Integrate R With Java Using Rserve

R Tutorial: How to Integrate R With Java Using Rserve http://codophile.com/2015/05/02/how-to-integrate-r-with-java-using-rserve/ IntroductionBuilding Machine Learning based anal......

qwfys
2018/07/26
63
0
Rserve的R语言客户端RSclient

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已...

zh119893
2014/05/04
731
1
How to Integrate R With Java Using rJava

R Tutorial: How to Integrate R With Java Using rJava http://codophile.com/2015/04/15/how-to-integrate-r-with-java-using-rjava/ Why use R with Java?Modern enterprise applications......

qwfys
2018/07/26
8
0

没有更多内容

加载失败,请刷新页面

加载更多

redis 内存信息解析

used_memory:由 Redis 分配器分配的内存总量,包含了redis进程内部的开销和数据占用的内存,以字节(byte)为单位 used_memory_rss:向操作系统申请的内存大小。与 top 、 ps等命令的输出一...

Canaan_
24分钟前
2
0
windows 下 python3 安装 pip setuptools

本文链接:https://blog.csdn.net/huzuxing/article/details/80807744 最近在家使用python的时候,总是报setuptools 模块未找到,于是在网上搜索了相关解决办法,但是都没有解决问题。 于是去...

开源中国首席CYO
30分钟前
3
0
数据库添加索引

mysql索引添加 navicat 步骤 - 选择表 -> 设计表 ->索引

以谁为师
40分钟前
5
0
java7与java9中的try-finally关闭资源

1.java7中的try 在java7之前,对于一些需要使用finally关闭资源的操作,会显得很臃肿. try{//}catch(Exception e){//}finally{if(xxxx != null){xxxx.close();}} 在jav...

Blueeeeeee
42分钟前
3
0
字节序转换详解

在跨平台和网络编程中我们经常会提到网络字节序和主机字节序,如果没有正确对两者进行转换,从而导致两方产生了不同的解释,就会出现意想不到的bug。 目录 0x01 概念 0x02 分类 0x03 两种字节...

无心的梦呓
52分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部