推荐使用。相比RServe更灵活,效率更高。

基本步骤

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自带的测试实例,加入项目测试,执行成功。配置完成。

5.  Java本地测试(项目test/rtest.java以及 test/TestDLL.java)

C:\Program Files\R\R-3.0.1\library\rJava\jri\examples\有rJava自带的实例

R脚本分条执行,基本语法同Rserve. for循环时需要java变量和R变量的转换。

6. Java web的lib目录下加入JRI.jar, JRIEngine.jar, REngine.jar

C:\Program Files\R\R-3.0.1\library\rJava\jri\i386\jri.dll放入Java Path中或者Tomcat bin目录中(就是将jri.dll放入java web项目的classpath 中)

7.  利用自带实例rtest中的TextConsole方式实例化Rengine对象

class TextConsole implements RMainLoopCallbacks{}

Rengine re=new Rengine(args, false, new TextConsole());

8.   经个人测试,在项目中多次调用Rengine re=new Rengine(args, false, new TextConsole()); 会在第二次报错。

最后将Rengine对象实例化改成 单例 模式(重要),项目初始化时一并进行实例化。

对于R中需要加载的外部包,可以一并在实例化re时,执行。

public void callR(){

		System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("jri"); try {
//Rengine re = new Rengine(null, false, new TextConsole());
Rengine re = rengine.getInstance(); re.eval("setwd('f:/R_Stat/')");
re.eval("selected_dat <- read.csv('dat.csv',head=TRUE,sep=',' , as.is = T)");
{
...
re.eval("rect(1, 5, 3, 7, col='white')");
re.eval("dev.off()");
}
} catch (Exception e) {
e.printStackTrace();
}
}

测试通过。

Java调用R(二)_JRI的更多相关文章

  1. JAVA 调用 R 语言之升华篇

    由于项目的需要,最近做了一个javaWeb调用R的组件,在这里,我把自己走的一些弯路给大家总结一下: 一.选取什么插件作为java和R之间的通信? 1. 在传统的方式中,大致可以分为两类:一类是JRI ...

  2. JAVA 调用 R 语言

    1 简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的 ...

  3. Java调用R语言

    R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/ ...

  4. Java 调用R 方法

    JAVA 调用 R 语言 1       简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面, ...

  5. JAVA调用R脚本

    0 前言R是一种非常方便易用的绘图.统计分析.ML算法设计方面的脚本语言.实际中有这样一种场景:算法工程师用R搭建了机器学习算法模型,想用于javaweb之中但是又不想重新用java写一遍算法模型,那 ...

  6. Rsession让Java调用R更简单

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

  7. JAVA调用R

    JAVA很适合开发应用系统,但是数学建模和计算能力非其所长,如果该系统需要进行大量的统计或者优化的计算,调用R是一种很好的方式.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的 ...

  8. Rserve, java调用R源文件

    Rserve安装和加载: install.packages("Rserve") library("Rserve") Rserve()   java调用: REn ...

  9. Java调用R(一)_Rserve

    最近做项目涉及到R总结一些Java本地调用R和Java web项目中调用R的基本步骤 1.  R中安装Rserve包 2.  系统变量Path加上 C:\Program Files\R\R-3.0.1 ...

  10. Java调用R(三)_系统命令调用

    java通过配置的系统命令Rscript直接调用R脚本. 优点:R脚本和Java代码完全分离 缺点:R中变量不能控制 1. Java本地能够成功调用. public void CallR() { Ru ...

随机推荐

  1. vs里 .sln和.suo 文件

    Net解决方案下 .sln文件和.suo文件的解释:When a Web site is created, a solution file (.sln) and a hidden solution u ...

  2. js 中读取JSON的方法探讨

    方法一:函数构造定义法返回 var strJSON = "{name:'json name'}";  //得到的JSONvar obj = new Function("r ...

  3. Spring 中各种通知

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. mysql锁死的现象判断

    一般发生表锁死这种低级问题,就有两种情况:1.程序员水平太菜,2.程序逻辑错误. 一旦发生系统会出现超时,关键是有可能你看不到正在活动的php进程,而系统的慢查询日志也不会记录,只能通过show fu ...

  5. underscorejs-countBy学习

    2.20 countBy 2.20.1 语法 _.countBy(list, iteratee, [context]) 2.20.2 说明 排序一个列表组成一个组,并且返回各组中的对象的数量的计数.类 ...

  6. javascript获取div高度

    DOM的: 获得了div的高度值 = document.getElementById("目标id").offsetHeight;

  7. Android自定义View基础

    自定义控件, 视频教程 http://www.jikexueyuan.com/course/1748.html 1. 编写自定义view 2. 加入逻辑线程 3. 提取和封装自定义view 4. 利用 ...

  8. TatukGIS - GisDefs - DateTimeToXMLString 函数

    函数名称  DateTimeToXMLString 所在单元  GisDefs 函数原型           function DateTimeToXMLString(_dtm: TDateTime; ...

  9. sql2000

    sql 2000简体中文企业版下载(含SP3 SP4 下载地址)安装图解及sp4安装教程图解 2012-07-17 16:24:37|  分类: mssql数据库|字号 订阅     sql 2000 ...

  10. POJ 1321-棋盘问题(DFS 递归)

    POJ 1321-棋盘问题 K - DFS Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I6 ...