推荐使用。相比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

{

...

re.eval("rect(1, 5, 3, 7, col='white')");

re.eval("dev.off()");

}

} catch (Exception e) {

e.printStackTrace();

}

}

测试通过。

补充:Rengine的构造设成单例

class rengine{

private static Rengine re;

private rengine(){

}

public static Rengine getRegineInstance(){

if(re ==null){

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

re.eval("library(arules)");

}

return re;

}

}

java jri_Java调用R(二)_JRI | 学步园相关推荐

  1. 从java里调用r jri的设置方法_从Java里调用R – JRI的设置方法

    JRI允许用户从Java里面调用R的功能,而Eclipse是目前最常用的Java开发环境.本文介绍在Eclipse里设置JRI的方法. 环境: Windows 7 32bit Eclipse 3.6 ...

  2. 从Java里调用R – JRI的设置方法

    JRI允许用户从Java里面调用R的功能,而Eclipse是目前最常用的Java开发环境.本文介绍在Eclipse里设置JRI的方法. 环境: Windows 7 32bit Eclipse 3.6 ...

  3. 数独java界面基础_Java从基础到进阶学习之路—-数独小游戏制作(二) | 学步园...

    详细设计 游戏数据结构设计 显然,需要存储数据的地方只有九宫格地图部分. 对于地图,很明显我们可以采用二维数组int [] [] game;来存储地图中的数据.但是int的二维数组虽然直接简单,但是还 ...

  4. java dll 调用方法_关于Java调用dll的方法 | 学步园

    Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台界面可以更快速,也能带来跨平台性. Java调用C/C   写好的DLL库时,由于基本数据类型不同.使用字节 ...

  5. java的set和get方法实例化_java反射机制 调用get set 方法 | 学步园

    调用get set 方法,需要 某一个类  类中的字段  字段的值来实现 代码: package entity; import java.lang.reflect.Method; import jav ...

  6. java webservice 天气预报_java 调用天气预报的webservice | 学步园

    网上有很多例子,但我还是试了好多遍才走通,代码如下: import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; imp ...

  7. java 项目心得_读懂JAVA WEB项目的一点心得 | 学步园

    今日接手一个JAVA开发的WEB项目,代码已是现成的(无文档),需要熟悉和日后修改.很久没有写代码了,于是有点儿不知如何下手,现在将自己感觉有用的做法记录一下. 一.熟悉应用整体功能 WEB项目的话, ...

  8. java jtabbedpane 关闭_JTabbedPane实现关闭按钮 | 学步园

    JTabbedPane如切换卡一般,大大的优化了布局,方便用户操作.Java默认的JTabbedPane添加tab时只会显示一个标题,咱们这里来给它实现关闭按钮,当鼠标移上这个tab时,便显示关闭按钮 ...

  9. java secretkey_Java中的SecretKeyFactory类 | 学步园

    SecretKeyFactory表示秘密密钥的工厂.类声明:public class SecretKeyFactoryextends Object 密钥工厂用来将密钥(类型 Key 的不透明加密密钥) ...

最新文章

  1. replugin源码解析之replugin-plugin-gradle(插件的gradle插件)
  2. 爬虫+数据分析:重庆买房吗?爬取重庆房价
  3. Linux翻页命令more和less
  4. Linq(拓展方法+select())
  5. python模块如何导入解释器_无法从嵌入式解释器导入内置模块(仅限Windows)
  6. java追加字符串到文件_java 将字符串追加到文件已有内容后面的操作
  7. 21天jenkins打卡Day4-新增账号
  8. java用什么编辑器比较好_强大又好用的一款微信排版工具:135编辑器
  9. java ssm框架论文,ssm框架理解
  10. java定义一个生日类_java定义一个学生类,学生类的数据成员有姓名,学号,出生日期,专业,提供两个以上的...
  11. 【图解版】HashMap原理初探
  12. linux(centos) 保存退出vi编辑
  13. 【项目篇-资料获取】怎么获取创新创业比赛资料、优秀作品?如何去借鉴?
  14. 薛定谔的猫量子计算机,亚马逊新的量子计算机设计竞依赖于微小的“薛定谔的猫”...
  15. 一文读懂直播卡顿优化那些事儿
  16. TC358743XBG是一颗将HDMI信号转换成MIPI CSI2的芯片,将替代已停产物料TC358749XBG,支持改版
  17. 数据结构代码题--头插法和尾插法的应用
  18. 高德地图轨迹PHP,高德地图JSAPI轨迹重复绘制
  19. 机器学习中的特征工程——分类变量的处理
  20. PCIe体系结构介绍

热门文章

  1. Linux每个用户单独配置ssh,大神全面解读如何限制SSH用户访问Linux中指定的目录...
  2. linux永久启动服务命令,Linux(CentOS)用service命令启动任意服务
  3. 在windows环境中关于 pycharm配置 anaconda 虚拟环境
  4. C++Event机制的简单实现
  5. 简要分析unity3d中剪不断理还乱的yield
  6. php 几个比较实用的函数
  7. Java中static final用法小结
  8. 一个代表年月的类YearMonth
  9. (3)QuartusII 封装网表文件(FPGA不积跬步101)
  10. (07)Vivado约束顺序