在Java中调用R程序

在Java中调用R程序,第1张

import xx.xx.R(xx为你的包名销雀数,若在同一个包中,该句省略)

其它类中

(1)非静态方法 R r = new R() r.方法;

(2)静态方法岁悄 R.方法;

这亏首个还是看看书吧,很简单的

Java调用R,就是使用JRI.jar中的Api,执行一条R语言命令,当然首先你要了解R语言的语法。\x0d\x0a1.JRI中主要的API\x0d\x0aRengine R引擎,通过它进行R语言的启动、运算、画图、关闭等功能。\x0d\x0a一个银大线程只能实例化一次,推荐使用单例模式。\x0d\x0a实例化代码:\x0d\x0aRengine engine = new Rengine(null,false,null)\x0d\x0aRengine.versionCheck() //R版本校验,返回true:版本校验通过 返回false:版本校验未通过\x0d\x0aengine.waitForR() //R加载校验,返回true:加载成功 返回false:加载失败\x0d\x0aengine.end() /好脊/结束R,在后续没有调用R的情况下使用,否则R将退出,不能继续使用R。\x0d\x0a\x0d\x0a2.REXP\x0d\x0aR计算结果表达式\x0d\x0aREXP rexp = engine.eval_r(String str) //执行R命令,返回结果REXP\x0d\x0arexp.asInt() rexp.asDouble() rexp.as.. //将REXP转成java类型\x0d\x0aengine.assign(String name,double d) //定义R变量,name为R中变量的名字\x0d\x0a\x0d\x0a以上大概了解了JRI的基本API,下锋袜竖面写个简单的例子。\x0d\x0a//求n个数的最大值\x0d\x0aRengine engine = new Rengine(null,false,null)\x0d\x0aint[] arr = new int[]{-1,2,1,-3,5,4,-2}\x0d\x0aengine.assign("x",arr)\x0d\x0aREXP rexp = engine.eval_r("max(x)")\x0d\x0aint max = rexp.asInt()\x0d\x0aSystem.out.println(max)\x0d\x0aengine.end()

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)

engine.end()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8253171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存