怎样通过Java调用自己编写的R函数?

怎样通过Java调用自己编写的R函数?,第1张

Java调用R,就是使用JRIjar中的Api,执行一条R语言命令,当然首先你要了解R语言的语法。

1JRI中主要的API

Rengine R引擎,通过它进行R语言的启动、运算、画图、关闭等功能。

一个线程只能实例化一次,推荐使用单例模式。

实例化代码:

Rengine engine = new Rengine(null,false,null);

RengineversionCheck() //R版本校验,返回true:版本校验通过 返回false:版本校验未通过

enginewaitForR() //R加载校验,返回true:加载成功 返回false:加载失败

engineend() //结束R,在后续没有调用R的情况下使用,否则R将退出,不能继续使用R。

2REXP

R计算结果表达式

REXP rexp = engineeval_r(String str) //执行R命令,返回结果REXP

rexpasInt() rexpasDouble() rexpas //将REXP转成java类型

engineassign(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};

engineassign("x",arr);

REXP rexp = engineeval_r("max(x)");

int max = rexpasInt();

Systemoutprintln(max);

engineend();

1 如果在子类中调用 ,那么先new 一个参数所在类型的对象a,即 A a = new A(),然后在子类中用super(a)就可以调用父类的带类参数构造方法。

2 如果在其他类中调用,那么也需要先new 一个参数所在类型的对象a,即 A a=new A();,然后new调用类的的时候把参数传进去就可以了,B b = new B(a)。

这个需要设置Container

代码如下:

public class Gui {

// 主函数

public static void main(String[] args) {

Frame();

}

// 定义窗体

static void Frame() {

JFrame fra = new JFrame();

frasetTitle("圈插图");

frasetVisible(true);

frasetSize(300, 300);

// frasetBackground(ColorGREEN);

fragetContentPane()setBackground(ColorGREEN);

}

}

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

原文地址: http://outofmemory.cn/langs/11666471.html

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

发表评论

登录后才能评论

评论列表(0条)

保存