java调用R

环境:win7 32位  jdk1.7  R 2.15.0  

java调用r主要有三种方式,rJava,rServer还有rCaller,这边主要讲用rJava调用

rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法。由于rJava是底层接口,并使用JNI作为接口调用,所以效率非常高。在JRI的方案中,JVM直接通过内存直接加载RVM,调用过程性能几乎无损耗,因此是非常高效连接通道,是R和Java通信的首选开发包。

之前用R3.0.2,不知道是否是版本太高的原因,

利用rjava实现java调用R的过程中,像打印变量,这些都可以成功

String version = re.eval("R.version.string").asString();System.out.println(version);

定义变量的情况也可以

REXP x=re.eval("1:10");

System.out.println("REXP result = "+x);

re.eval("print(1:10/3)");

但是涉及到调用基本函数的时候,却是总报空指针的错误。

比如

re.eval("rnorm(10)");

double[] arr =re.eval("rnorm(10)").asDoubleArray();

或者是自带的测试代码中的

REXP x;

re.eval("data(iris)",false);

System.out.println(x=re.eval("iris"));

进入正题,首先打开R软件,

install.packages("rJava")

如果library(rJava)不报错,说明第一步成功了。

启动jvm

.jinit()

s <- .jnew("java/lang/String", "Hello World!")

s

[1] "Java-Object{Hello World!}"

然后设置环境变量

CLASSPATH=D:\proSoftware\R-2.15.0\library\rJava\jri;

PATH=D:\proSoftware\R-2.15.0\bin\i386

R_HOME=D:\proSoftware\R-2.15.0\R-2.15.0\

将D:\proSoftware\R-2.15.0\library\rJava\jri下的三个jar包(JRIEngine.jar,JRI.jar,REngine.jar)拷到C:\Program Files\Java\jdk1.6.0_10\lib目录下,即jdk目录的lib下

打开eclipse,创建java project。同时将上述三个包导入工程中。

D:\proSoftware\R-2.15.0\library\rJava\jri\examples目录下有两个自带测试代码rtest.java和rtest2.java。

运行这两个代码,如果结果不报错,说明调用成功。

运行之前记得run configurations中添加VM参数设置为 -Djava.library.path=D:\proSoftware\R-2.15.0\library\rJava\jri

时间: 2024-08-11 07:50:13

java调用R的相关文章

Rsession让Java调用R更简单

Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器.随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长.现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言. 要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥

JAVA调用R脚本

0 前言R是一种非常方便易用的绘图.统计分析.ML算法设计方面的脚本语言.实际中有这样一种场景:算法工程师用R搭建了机器学习算法模型,想用于javaweb之中但是又不想重新用java写一遍算法模型,那么可以考虑java程序中直接调用R的脚本.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 本文将搞清楚如下几个问题: 1)java调用R的方式有哪些及每种方式如何使用? 2)这些调用方式的有哪些优缺点? 下面开始. 1 java调用R的两种方式1.1 远程调用模式(使

Java调用R语言

R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/IP的服务器,通过二进制协议传输数据,可以提供远程连接,使得客户端语言能够调用R. Rserve作为一个package发布在CRAN上,可以直接使用install.packages("Rserve")进行安装.需要使用时在R控制台下加载该包,然后输入命令Rserve(),开启服务器就可以供

Java调用R——rJava的安装和配置

rJava是Java通过JRI调用R所要安装的包.配置起来比较麻烦,我参考网上进行配置,使用rJava包中example里面的示例测试,控制台显示: Cannot find JRI native library! Please make sure that the JRI native library is in a directory listed in java.library.path. java.lang.UnsatisfiedLinkError: D:\developmentTools

JAVA调用R脚本 windwos路径下

RConnection c = new RConnection();// REXP x = c.eval("source('D:\\\\jiaoben\\\\RJava_test.R',encoding = \"UTF-8\")"); REXP x = c.eval("source('D:\\\\jiaoben\\\\Rjava_testx6.R',encoding = \"UTF-8\")");// REXP eval =

Java调用R(二)_JRI(转)

基本步骤 1.  R中需要安装rJava包. 2.  系统变量Path加上 C:\Program Files\R\R-3.0.1\bin\i386;C:\Program Files\R\R-3.0.1\library\rJava\jri 系统变量Classpath加上: C:\Program Files\R\R-3.0.1\library\rJava\jri\JRI.jar 3.  项目中加入JRI.jar, JRIEngine.jar, REngine.jar 4.  将rJava自带的测试实

java 与 R 相互调用

https://www.r-project.org/ http://cos.name/2013/08/r-rjava-java/ http://blog.csdn.net/hwssg/article/details/39177959 目录 rJava介绍 rJava安装 rJava实现R调用Java rJava(JRI)实现Java调用R (win7) rJava(JRI)实现Java调用R (Ubuntu) 1. rJava介绍 rJava是一个R语言和Java语言的通信接口,通过底层JNI实

Java调用SMSLib发送短信详解

项目中需要用到发送短信功能,之前没做过这方面,找人咨询了一下,也网上查了查,发现并不是很复杂.目前项目已经完成了,做个记录以备后用.程序中发送短信主要有4种方法: 1.向当地的运营商申请网关,不需要额外的设备,利用对方提供的 API调用程序发送短信,适用于大型的通信公司.稳定,速度快,适合短信量特别大的需求,需要连接到运营商的网络中,不适合内网项目. 2.短信猫发送短信,借助像 GSM MODEM之类的设备(支持AT指令的手机也行),通过数据线连接电脑来发送短信,这种方法比较适用于小公司及个人.

MyElipse6.5环境下java调用vs2010动态链接库DLL人脸检测

Java调用C++动态链接库的网络上的文章也很多,但是还是有个别的问题没有提到,导致操作起来还是难度较大,关键是程序的疑难杂症不好治. 准备工具:vs2010,java1.6,MyElipse6.5,opencv2.4.6(其他版本请留意程序中的版本号),摄像头. 操作流程,流水式操作: 1.先建立文件FaceDetect.java文件并通过指令生成.h头文件 FaceDetect.java的代码: public class FaceDetect { static { System.loadLi