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第一个参数。当然输入参数之间可以有多个空格,中间的多个空格会被忽略掉。
完 谢谢观看