我是最近才接触到了R语言,所以用起来有很多的问题,之前只是想单纯想用java调用到R语言中的一些东西,没有想到这个事情并不是想象的那么简单的。好了,闲话不多说,下面我来说说我在运用R的时候遇上的问题吧。

第一步,配置R的环境。

首先,需要下载一个RGUI的东西,这个东西在我的理解上就跟JVM一个样子,我下载的版本是R 3.1.3(顺便说一句,在64位系统下面的32位的RGUI和64位的RGUI都可以使用的,我的电脑系统是64位的)。下载安装完成,我相信用java的朋友都把java的环境给配置好了,这里我就不讲java的配置了。打开系统的环境变量,在CLASSPATH中添加D:\R-3.1.3\library\rJava\jri\;(就是你那个rjava包的路径),然后在path中添加D:\R-3.1.3\bin\x64;D:\R-3.1.3\library\rJava\jri\x64;(我的系统是64位的,32位的把x64换成i386,但是强调一点你在多少位的JVM中运行R就得把R配置成多少位的,这样子配置会省很多的事情),然后配置R_HOME:D:\R-3.1.3(安装的路径)。这样子配置就算是把R的东西给配置好了。

第二步,下载rjava的包。

然后,你需要去下载你对应的rjava包,在RGUI中选程序包,选一个隔你最近的一个城市然后把rjava包下载(有时候下载不起,我在后面可以提供R 3.1.3版本的rjava包,这个包的版本不一样后面在java中一样的不能调用r)。把下载好的rjava包放在R-3.1.3\library下面(解压了的文件夹),OK下载好了,位置也放好了,进入下一步。

第三步,在myeclipse中调用R。

先在rjava包jri中找到3个包,JRI.jar,JRIEngnie.jar和REngine.jar,将这3个包放在自己的java工程中导入进去。然后在R-3.1.3\library\rJava\jri\examples中找到rtest.java和rtest2.java这两个文件,直接复制到自己的java工程中。先说说这两种连接方式有什么不同,rtest.java是直接把R的console引在了我们的java控制台中,而rtest2.java是启动一个R的一个服务,这两种方式各有优势,自己进行选择,我选择的是rtest.java的方式。说说这里会遇到的问题,第一,可能会出现java.library.path的问题,那是因为没有找到那个库,可以在VM中给他指向你的那个库在vm arguments里添加-Djava.library.path=.../.../lib;第二,可能会出现什么不能在32位系统平台中运行64位的 .dll ,出现这个错的时候说明你的配置出问题了,你要去检查你的这个java程序中配置的java是不是64位的,反正就是要把这两个的位数对应起来就行了。遇到最多的问题就是这两个了,然后基本技能跑通这个程序。

第四步,Spring MVC的项目中调用语言

可以说大多数的开发人员最重要的目的就是把这个rjava运用到项目中去。在这个步骤中,我将这个调用的方法写成了一个工具类,但是我遇见了两个大的问题,第一个,因为在项目是在tomcat中发布的,所以tomcat在加载的时候没有找到R的.dll文件,这个问题可以通过System.out.println(System.getProperty("java.library.path"));这句话,找到你用的那个tomcat下面加载文件的目录,将这个jri.dll放进去,重新运行这个就行了。第二个,是我在写工具类的时候发生的一个错误,我没有考虑到自己会多次使用到这个工具,从而导致我的电脑启动了很多个JVM,内存溢出,死机。这个问题,是通过一个单例模式的建立来解决的,我只让这个Rengine在项目中被实例化一次,这样子,他就只能被启动一次,不会导致电脑死机等等。

第五步,调用R的方法

这里调用的方法是rengine.eval("xxxxx"),xxx就是你写的R语言的代码。OK,介绍完毕。

最后就是我给大家提供的rjava包和R的安装包,http://pan.baidu.com/s/1bnynNfp。

java 调用r语言包传参数_Java与R语言的配置,调用相关推荐

  1. java怎么跟qtp脚本传参数_QTP多个Action之间传递参数的方法详解

    脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧.下面我们来详 ...

  2. java如何使用主函数的参数_java主函数参数问题

    public static void main(String[] args)是java主函数的声明,它不同于C语言的主函数,带有一个String数组作为参数. eg: public class Num ...

  3. nodejs html多语言切换,利用 nodejs 自动生成 Android 语言包实现应用内切换多语言的方案...

    Android 默认的多语言支持 在 Android 工程的 res 目录下,通过定义对应的语言文件夹名称就可以实现多语言支持 // 手动切换语言 Resources resources = getR ...

  4. c语言周传生教材答案,C语言程序设计与实践(普通高等教育“十二五”规划教材)...

    C语言作为一种通用程序设计语言,简捷.高效.使用广泛,既适合于编写应用软件,又适合于编写系统软件.对于计算机应用人员来说,掌握C编程知识与技能是至关重要的.本书较全面的讲述了C语言及其程序设计方法.全 ...

  5. c语言带默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

    (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() 函数 ...

  6. c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

    描述 (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() ...

  7. c语言中代码参数太少,C语言不定参数探究

    一.可变参数函数原型 可变参数函数的原型声明格式为:type VAFunction(type arg1, type arg2, - ); 参数可以分为两部分:个数确定的固定参数和个数可变的可选参数.函 ...

  8. WIN7 英文 语言包(KB972813)/多国语言包下载(转)

    一般来说英文的系统都要比中文的系统运行起来反应快,我想把这个系统的语言更改为英文.可惜的是专业版的updata不提供语言包升级,因为除了旗舰版提供语言包升级外,别的都是不可以在线升级.现在是英文系统找 ...

  9. eclipse 2022:安装中文语言包(babel language packs)塈切换语言的方法

    我一直使用的eclipse版本是neon,2016年的版本,真是好老了,最近想安装一个antlr4IDE插件,总是安装不成功,同事的eclipse 2020就可以正常安装,我觉得我的Eclipse版本 ...

最新文章

  1. android 百度地图zoomtospan,android百度地图:MapController
  2. 需要监控JanusGraph的一些指标
  3. linux开机自动启动(自启动)脚本、程序(初始化脚本)(海康摄像头自启动程序)
  4. Linux利用nginx-gridfs搭建部署Nginx和MongoDB文件服务器,支持用户密码验证!
  5. 验证Java编程环境是否成功时出现“'javac'不是内部或外部命令,也不是可运行的程序或批处理文件”
  6. 不能错过!简单易懂的哈希表总结
  7. javascript第四弹——变量、作用域、内存
  8. python 01列表异或_python运算符及优先级顺序
  9. Redis 不安全临时文件漏洞
  10. visio绘图与processon绘图比较
  11. 从wireshark 抓包中的导出 H.264 变成可用暴风直接播放的H264 裸码流文件
  12. DotNetSkin 完美破解
  13. UWF自定义设置与命令管理
  14. 山东科技大学计算机学院陈卓艳,转发教务部表彰大学生学习竞赛获奖单位和个人通知...
  15. NYOJ-999-师傅又被妖怪抓走了
  16. Warning: .config does not exists一生一芯
  17. 分析Perm()函数功能、代码、时间复杂度
  18. 原码,反码,补码详解及原理
  19. selenium+python安装教程
  20. python练习实例——水仙花数判断

热门文章

  1. HOJ 2678 Stars
  2. 做移动端视频通话软件,大致看了下现有的开源软件(转)
  3. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
  4. 其它数据类型和Json的转化
  5. Android学习笔记-判断手机外部存储是否可读写
  6. 【Codeforces #130 Div2】Solutions
  7. 浅析Java与C#的事件处理机制(转)
  8. Java 的Tuple(类似.net等的元组)
  9. linux mysql 系统时间函数吗_Linux 宝库 - Mysql日期和时间函数不求人
  10. 1016 部分A+B (15分)