为什么要用java调用R?
Java作为一个非常流行的编程语言,具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。但是Java缺乏数据分析以及可视化的能力。但是R语言却是专门为统计而生,R语言近年来发展迅速,可以用来进行机器学习,数据挖掘,数据可视化。 为了弥补这种差距, 我们可以将JAVA与R结合起来,
今天我们来说两种方法,首先第一个,JAVA通过Rserve调用R语言。
一,环境
系统:win10
JDK:1.8
R:3.3.1
eclipse:luna
二.准备工作
在R软件里面安装Rserve包
install.packages("Rserve")
如果你已经安装了这个包就不需要这一步。如果安装过程没有报错就OK。接下来我们就要通过下面语句启动服务:
Rserve()
如果出现下面语句这表示服务已经启动好了:
Starting Rserve...
"D:\PROGRA~1\R\R-33~1.1\library\Rserve\libs\x64\Rserve.exe"
现在我们已经运行Rserve服务器,我们就可以在eclipse中创建一个Java程序,使用Rserve与R进行通信,并在Java代码中调用R的函数。
我创建里一个RserveProject的java工程,然后右击工程名—properties—Java Build Path—Librares—Add External Jar...加载REngine.jar和Rserve.jar两个jar包,我把R装在了D:\Program Files\下,所以那两个包在D:\Program Files\R\R-3.3.1\library\Rserve\java。大家根据自己的实际情况找找。
三.编写Java程序
在下面程序中,我分别直接调用了R中的函数,也调用自己的R脚本。
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
import org.rosuda.REngine.REXPMismatchException;;
public class Temp {
public static void main(String[] args) throws REXPMismatchException {
// TODO Auto-generated method stub
RConnection connection = null;
System.out.println("平均值");
try {