1. 下载安装R-3.1.1-win.exe;
2. 在R中安装rJava
> install.packages("rJava")
3. 设置环境变量:
1 PATH:D:SoftWareJavajdk1.6.0_45jreinserver;D:SoftWareJavaRR311inx64 2 CLASSPATH:D:SoftWareJavaRR311library Javajri
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访问了。