Java调用R(二)

Rsession提供了一种简单的方式,让Java可以访问远程或本地的Rserve实例。Rsession是对Rserve的封装,提供了更高层的API接口,包括Rserve服务器控制,多会话机制,并支持Windows环境。
另一个R和Java通信的库JRI,并不支持多会话机制。关于R和Java通信的其他文章,请参考:解惑rJava R与Java的高速通道, Rserve与Java的跨平台通信

Rsession项目主页:[url]https://code.google.com/p/rsession/[/url]

系统环境

Win7 64bit
R: 3.0.1 x86_64-w64-mingw32/x64 b4bit
发行包下载:解压缩就可以直接使用了

[url]http://rsession.googlecode.com/files/libRsession.zip[/url]

包括3个jar包:REngine.jar, Rserve.jar, Rsession.jar

源代码下载:(SVN)

[url]http://rsession.googlecode.com/svn/trunk/Rsession/[/url]


具体调用代码如下:


package org.conan.r.rsession;

import java.io.File;
import java.util.Properties;

import org.math.R.RserverConf;
import org.math.R.Rsession;
import org.rosuda.REngine.REXPMismatchException;

public class RsessionDemo {

public static void main(String args[]) throws REXPMismatchException {
RserverConf rconf = new RserverConf("192.168.1.201", 6311, "conan", "conan", new Properties());
Rsession s = Rsession.newInstanceTry(System.out, rconf);

// 执行R脚本
double[] rand = s.eval("rnorm(5)").asDoubles();
System.out.println(rand);

// 创建一个R对象
s.set("demo", Math.random());
s.eval("ls()");

// 保存R运行时状态到文件
s.save(new File("./output/save.Rdata"), "demo");

// 删除R对象demo
s.rm("demo");
s.eval("ls()");

// 从文件加载R环境
s.load(new File("./output/save.Rdata"));
s.eval("ls()");
s.eval("print(demo)");

// 创建一个data.frame对象
s.set("df", new double[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } }, "x1", "x2", "x3");
double df$x1_3 = s.eval("df$x1[3]").asDouble();
System.out.println(df$x1_3);
s.rm("df");

// 生成一个图形文件
s.eval("getwd()");
s.toJPEG(new File("./output/plot.png"), 400, 400, "plot(rnorm(10))");

// 以HTML格式输出
String html = s.asHTML("summary(rnorm(100))");
System.out.println(html);

// 以文本格式输出
String txt = s.asString("summary(rnorm(100))");
System.out.println(txt);

// 安装新类库
System.out.println(s.installPackage("sensitivity", true));

s.end();
}
}





对比Rserve的JavaAPI(参考文章:Rserve与Java的跨平台通信),是不是感觉Rsession再友好呢!这样就能在不打开R编译器的情况下,使用R的底层包服务。更适合于封装R。

我们在使用RStudio时,任务管理器中也可以看到rsession的进程!猜一下,RStudio也在使用rsession做程序接口。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值