rJava配置

1. 下载安装R-3.1.1-win.exe;

2. 在R中安装rJava

> install.packages("rJava")

3. 设置环境变量:

1 PATH:D:\SoftWare\Java\jdk1.6.0_45\jre\bin\server;D:\SoftWare\Java\R\R311\bin\x64
2 CLASSPATH:D:\SoftWare\Java\R\R311\library\rJava\jri

4. 在R中调用Java 测试:

> library(rJava)
> .jinit()
> s <- .jnew("java/lang/String", "Hello World!")
> s

一切配置成功则出现:

[1] "Java-Object{Hello World!}"
#加载rJava包
> library(rJava)
> search()
 [1] ".GlobalEnv"        "package:rJava"     "package:stats"
 [4] "package:graphics"  "package:grDevices" "package:utils"
 [7] "package:datasets"  "package:methods"   "Autoloads"
[10] "package:base"

#启动JVM
> .jinit()

#声明并赋值到字符串
> s <- .jnew("java/lang/String", "Hello World!")
> s
[1] "Java-Object{Hello World!}"

#查看字符串长度
> .jcall(s,"I","length")
[1] 12

#索引World的位置
> .jcall(s,"I","indexOf","World")
[1] 6

#查看concat的方法声明
> .jmethods(s,"concat")
[1] "public java.lang.String java.lang.String.concat(java.lang.String)"

#使用concat方法连接字符串
> .jcall(s,"Ljava/lang/String;","concat",s)
[1] "Hello World!Hello World!"

#打印字符串对象
> print(s)
[1] "Java-Object{Hello World!}"

#打印字符串值
> .jstrVal(s)
[1] "Hello World!"

rJava优化过的方法调用,用$来调用方法

#同.jcall(s,"I","length")
> s$length()
[1] 12

#同.jcall(s,"I","indexOf","World")
> s$indexOf("World")
[1] 6

5. 安装Rserve

> install.packages("Rserve")

需要使用时在R控制台下加载该包,然后输入命令Rserve(),开启服务器,就可以供客户端调用。

 6. ubuntu系统启动Rserve

$ R CMD Rserve
#查看进程
$ ps -aux|grep Rserve
conan     7142  0.0  1.2 116296 25240 ?        Ss   09:13   0:00 /usr/lib/R/bin/Rserve

#查看端口
$ netstat -nltp|grep Rserve
tcp        0      0 127.0.0.1:6311          0.0.0.0:*               LISTEN      7142/Rserve

这时Rserve已经启动,端口是6311。

7. Java远程连接Rserve

刚刚启动时,使用的本地模式,如果想运程连接需要增加参数 –RS-enable-remote

#杀掉刚才的Rserve守护进程
$ kill -9 7142

#打开远程模式重新启动
~ R CMD Rserve --RS-enable-remote

#查看端口
$ netstat -nltp|grep Rserve
tcp        0      0 0.0.0.0:6311            0.0.0.0:*               LISTEN      7173/Rserve

0 0.0.0.0:6311,表示不限IP访问了。

posted on 2014-09-02 11:22  fuleying  阅读(904)  评论(0编辑  收藏  举报