文档详情

java调用R软件实现数据分析引擎集成.doc

发布:2017-02-02约5.19千字共7页下载文档
文本预览下载声明
Java调用R,就是使用JRI.jar中的Api,执行一条R语言命令,当然首先你要了解R语言的语法。 1.JRI中主要的API Rengine R引擎,通过它进行R语言的启动、运算、画图、关闭等功能。 一个线程只能实例化一次,推荐使用单例模式。 实例化代码: Rengine engine = new Rengine(null,false,null); Rengine.versionCheck() //R版本校验,返回true:版本校验通过 返回false:版本校验未通过 engine.waitForR() //R加载校验,返回true:加载成功 返回false:加载失败 engine.end() //结束R,在后续没有调用R的情况下使用,否则R将退出,不能继续使用R。 2.REXP R计算结果表达式 REXP rexp = engine.eval_r(String str) //执行R命令,返回结果REXP rexp.asInt() rexp.asDouble() rexp.as.. //将REXP转成java类型 engine.assign(String name,double d) //定义R变量,name为R中变量的名字 以上大概了解了JRI的基本API,下面写个简单的例子。 //求n个数的最大值 Rengine engine = new Rengine(null,false,null); int[] arr = new int[]{-1,2,1,-3,5,4,-2}; engine.assign(x,arr); REXP rexp = engine.eval_r(max(x)); int max = rexp.asInt(); System.out.println(max); 太好了,一个简单的例子完成了,我们来试一下吧! 不好意思,这样程序还不能运行,Java调用R需要一个启动参数://应该就是环境变量 -Djava.library.path=%R_HOME%\library\rJava\jri 加上这个启动参数后,终于OK了。 做到这里Java调用R的第一步也是最重要的一步终于完成了。Congratulations! 这只是个简单的例子,在实际使用中可以使用R中较复杂的函数进行统计,个人建议对R的操作封装为一个工具类,以免对唯一的Rengine实例进行了误操作,导致程序整体崩溃。 R与JAVA的整合 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要。关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的函数,互相取长补短。现在也有一个项目JGR,用JAVA做R的图形界面,可以实现高亮显示自动补全等,还能让JAVA和R互相调用。   JAVA很适合开发应用系统,但是数学建模和计算能力非其所长,如果该系统需要进行大量的统计或者优化的计算,调用R是一种很好的方式。JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统。   首先要介绍的是Rserve的方式,这是一个基于TCP/IP的服务器,通过二进制协议传输数据,可以提供远程连接,使得客户端语言能够调用R。目前Rserve作为一个package发布在CRAN上,可以直接使用install.packages(Rserve)进行安装。需要使用时在R控制台下加载该包,然后输入命令Rserve(),开启服务器,就可以供客户端调用。   其客户端可以有多种,这里只介绍JAVA客户端。最早的客户端包是JRclient,在/Rserve上还可以下载到,但是现在该项目全部移到了/Rserve,使用REngine作客户端(和JRI一致),在该网站下可以下载到REngine.jar和RserveEngine.jar两个文件。如果用eclipse开发的话,在工程属性中导入这两个外部的jar包,就可以正常使用了。   一个简单的例子: [java]?view plain?copy?print? public?class?rtest?{??   public?static?void?main(String[]?args)?throws?REXPMismatchException, REngineException?{?? ??  RConnection?c?=?new?RConnection();?? ??  REXP?x?=?c.eval(R.version.string);?? ??  System.out.println(x.asString());??   }?? }?? span?style=color:#009900/span??   装好后要修改系统
显示全部
相似文档