概念:rJava是一个简单的R到Java接口。它可以与.C / .Call C接口相媲美。rJava提供R和Java之间的低级桥接(通过JNI)。它允许从R创建对象,调用方法和访问Java对象的字段。rJava发行版本可以从CRAN获得- 通常install.package(“rJava”)在R中是可以的。当前的开发版本可以从文件部分下载,从某种意义上说,rJava的逆向是JRI(Java / R接口),它提供了相反的方向 - 从Java调用R。JRI现在作为rJava软件包的一部分发布,尽管它仍然可以作为一个独立的实体(特别是用于开发)。目前,rJava被用作JGR,iPlots和JavaGD软件/软件包的一部分。
配置:
1、安装r环境,导入rjava库,这样r这边几乎完成。
2、环境变量的配置:
CLASSPATH配置:D:R-3.4.0library Javajri
Path配置:D:R-3.4.0inx64
3、java项目需要导入的依赖(在maven中)
<!-- https://mvnrepository.com/artifact/com.github.lucarosellini.rJava/JRI --> <dependency> <groupId>com.github.lucarosellini.rJava</groupId> <artifactId>JRI</artifactId> <version>0.9-7</version> </dependency> <!-- https://mvnrepository.com/artifact/com.github.lucarosellini.rJava/REngine --> <dependency> <groupId>com.github.lucarosellini.rJava</groupId> <artifactId>REngine</artifactId> <version>0.9-7</version> </dependency> <!-- https://mvnrepository.com/artifact/com.github.lucarosellini.rJava/JRIEngine --> <dependency> <groupId>com.github.lucarosellini.rJava</groupId> <artifactId>JRIEngine</artifactId> <version>0.9-7</version> </dependency>
4、运行java程序指定环境
-Djava.library.path="D:/R-3.4.0/library/rJava/jri/x64"
例如:java -jar -Djava.library.path="D:/R-3.4.0/library/rJava/jri/x64" importHighfreqAvg.jar
eclipse中直接在run configurations中配置就行
使用:
1、在java中调用:
实例化引擎
private static final Rengine ren = new Rengine(new String[] { "--vanilla" }, false, null);
编写命令
private static String command = "%s<-calYoyAvg('%s', '%s','%s','%s', '%s',%s,'%s')";
retrieveStocksCommand = String.format(command, highfreqData, codes, startDate, endDate, coefAvg, coefHigh, flag,coefAdjust);
将命令发送到r中执行,并接收返回值
org.rosuda.JRI.REXP list = ren.eval(retrieveStocksCommand);
最后解析list。
注意事项:
1、第一次配置需要重启eclipse才能生效。
2、所有的r需要依赖库需要在同一个文件夹下,一般默认安装在C:Program Files,部分依赖库也会在这个文件夹下,但是后来安装的库会在“用户”文件夹下,将用户的库复制过去或者从新指定安装库位置。