登录
首页精彩阅读R语言直接调用Java代码
R语言直接调用Java代码
2017-02-18
收藏

R语言直接调用Java代码

我们都知道Java语言长期处于霸主地位,在所有编程语言排行榜中,Java也是常年位居第一。在近几年也是爆炸式发展,几乎覆盖到了应用开发的所有领域。而R语言则在统计圈和数据可视化处于佼佼者,如果将Java的通用性和R的专业性紧密结合起来,就可以碰撞出不一样的火花。

在之前两篇文章中我已经写了如何在Java程序中调用R代码,

想必很多人都知道rjava包是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许R直接调用java对象的方法。可今天我就一个简单的函数system()来实现在R语言直接调用Java程序。

下面这个Java程序是用来计算斐波拉契数列的,我已经赋初值为5,

public class NoParameter {

    public void printFibo(int n){
        for(int i=1;i<=n;i++){
            System.out.println(f(i)+" ");
            if (i%10==0) {
                System.out.println();
            }
        }    
    }
    long f(long n){
        if (n==1||n==2) {
            return 1;
        } else {
            return f(n-1)+f(n-2);
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new NoParameter().printFibo(5);
    }

}

(上下滑动可查看代码)

运行结果如下:

R语言中,我们只需要用两句话就可以调用这个程序:

system("javac NoParameter.java")#生成.class文件
system("java NoParameter")#执行NoParameter文件

运行结果如下:

下面这个Java程序也是用来计算斐波拉契数列的,不过它需要在运行时写入参数,用来告诉程序你需要多少位的数列。

public class Parameter {

    public void printFibo(int n){
        for(int i=1;i<=n;i++){
            System.out.println(f(i)+" ");
            if (i%10==0) {

(上下滑动可查看代码)

这个在R语言中也需要两句话就可以运行:

system("javac Parameter.java")
system("java Parameter 6")

运行结果为

这里需要注意的就是Main函数参数String[] args,它是一个字符串数组,用来接收从命令行输入的参数。参数之间用空格隔开,java解释器会自动处理,把用空格隔开的每一个参数通过args数组传递给main方法。参数下标从0开始,args[0]就代表1第一个参数。当然输入参数之间可以有多个空格,中间的多个空格会被忽略掉。


数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询