Rserve 实现java与R的互通
Rserve 实现java与R的互通
服务器端: 华为弹性云服务器 服务系统:WindowsServer 2012 64bit Rserve默认端口:6311
(华为云服务器需要在网络安全组设置入方向规则并指定端口)
java项目所用jar包 REngine.jar RserveEngine.jar Rserve.jar
一、下载安装R
https://www.r-project.org/
Windows安装:注意,3.40版安装包有问题
https://cran.r-project.org/bin/windows/base/rpatched.html
二、设置系统环境变量
1、 下载安装以后,设置R相关的环境变量,本机安装(D:\R\R-3.3.2)
R_HOME 值为:D:\R\R-3.3.2
path 末尾添加 D:\R\R-3.3.2\bin;
配置完成后运行CMD 输入 R 出现如下则R环境配置成功
三、安装并载入Rserve
在R中运行
1
2
3
|
>install.packages( "Rserve" )
>library(Rserve)
|
四、启动Rserve服务
将Rserve安装目录D:\R\R-3.3.2\library\Rserve\libs\x64下三个文件拷到D:\R\R-3.3.2\bin\x64下
方法1、在R中启动Rserve 直接使用Rserve()函数。
1
2
3
4
5
6
7
|
>library(Rserve)
>Rserve()
Starting Rserve..
"D:\R\R-3.3.2\library\Rserve\libs\x64\Rserve.exe"
|
方法2、在“D:\R\R-3.3.2\library\Rserve\libs\x64”目录下运行CMD 输入命令 R CMD Rserve --help 出现下图说明Rserve可以启动
输入R CMD Rserve 成功启动
需要远程连接需要输入 R CMD Rserve --RS-enable-remote
五、Rserve的远程配置
查看Rserve配置
CMD下输入 R CMD Rserve --RS-settings 出现如下图
1
2
3
4
5
6
7
8
9
10
11
12
|
config file: Rserv.cfg 配置文件名称
working root: R运行时工作目录 /tmp/Rserv
port: 6311 通信端口
local socket: TCP/IP TCP/IP协议
authorization: 认证未开启
plain text password: 不允许明文密码
passwords file: 密码文件,未指定
allow I/O: 允许IO操作
allow remote access: 远程访问未开启
control commands: 命令控制未开启
interactive: 允许通信
max.input buffer size: 文件上传限制262mb
|
新建txt文本 内容如下
1
2
3
4
5
6
7
8
9
10
|
workdir /tmp/Rserv
remote enable
fileio enable
interactive yes
port 6311
maxinbuf 262144
encoding utf8
control enable
source start.R
plaintext enable
|
另存为名称为Rserv后缀名为.cfg的Rserv Rserv.cfg
上述信息包含了一个start.R脚本。新建R脚本输入
1
2
|
cat( "This is my Rserve!!" )
print(paste( "Server start at" ,Sys.time()))
|
保存并将文件放到该目录下(此脚本用于提示Rserve启动成功)
建立java工程 导入三个jar包添加到构建路径
DEMO:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package com.shengtian.test;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
public class TestRserve {
public static void main(String[] args) {
try
{
TestRserve tr = new TestRserve();
tr.callRserve();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void callRserve() throws RserveException,REXPMismatchException
{
RConnection rcon = new RConnection( "114.115.205.210" ); //建立远程链接
String rv = rcon.eval( "R.version.string" ).asString(); //得到R版本信息
double [] arr = rcon.eval( "rnorm(10)" ).asDoubles(); //通过R得到10个随机数返回数组
System.out.println(rv); //输出版本信息
for ( double x:arr) //遍历集合
{
System.out.println(x);
}
}
}
|
运行结果:
Rserve 实现java与R的互通相关推荐
- JAVA调用R语言之Rserve(二)
之前,我写了一篇文章是java调用R语言之Rserve,但我发现那种方法比较麻烦.后来我发现了一个比较方便的方法,所以今天从又写了一篇博客,来简单说说. 这次我们需要写一个简单的R语言脚本,然后通过运 ...
- JAVA调用R语言之Rserve
为什么要用java调用R? Java作为一个非常流行的编程语言,具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂 ...
- java矩阵传递给r_从JAVA调用R得到卡方统计和p值
我在JAVA中有两个4 * 4矩阵,其中一个矩阵包含观察计数和其他预期计数. 我需要一种自动的方法来计算这两个矩阵之间的卡方统计量的p值; 但是,就我所知,JAVA没有这样的功能. 我可以通过将两个矩 ...
- R语言实战应用精讲50篇(十三)-如何使用JAVA调用R语言,两种语言的完美结合
前言 为什么要用java调用R? Java作为一个非常流行的编程语言,具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进 ...
- java调用R 画词云
一直想找个java包画词云,但是网上并没有什么现成方案.在github上用关键词wordcloud搜一下,发现用java开发的没有比较好的开源项目(获得星星都很少,最多也就个位数).但是又想在java ...
- JAVA调用R语言 (未完)
R语言中起服务 > library(Rserve) > Rserve() 在java中调用 public static void main(String[] args) {try {Sys ...
- java集成r语言_R语言- 实验报告 - 利用R语言脚本与Java相互调用
一.实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调用 ...
- Java调用R脚本的方法总结
0 前言 R是一种非常方便易用的绘图.统计分析.ML算法设计方面的脚本语言.实际中有这样一种场景:算法工程师用R搭建了机器学习算法模型,想用于javaweb之中但是又不想重新用java写一遍算法模型, ...
- Java、R、JS 最常用,架构师薪资最高!起底中国开发者现状
想了解基础的中国软件开发者用户画像吗?想了解一线城市开发者的薪酬吗?想了解大多数开发者偏爱的编程语言吗?想了解高薪开发者从事的都是什么岗位吗?想了解最新的业界技术趋势吗?......本文带你一探究竟. ...
最新文章
- SpringBoot集成FreeMarker
- Ubuntu使用实录
- 非线程安全类ArrayList出现异常:java.util.ConcurrentModificationException
- 【指标导出】指标原始数据导出流程
- TCP的粘包和拆包及Netty中的解决方案
- windows11图文安装流程
- Android 插件化原理解析——Hook机制之AMSPMS
- 美元汇率pascal程序
- 五个 .NET 性能小贴士
- CSS中的text-shadow。
- Magento 自定义后台menu Insert dynamical menu in Magento’s Admin
- Autoware(2)—加载地图数据
- java组合与继承始示例_Java示例中的组合
- Q104:怎么用ray tracing画基于磨边楔形的“花环(Rosette)”
- oracle 如何使用循环语句,Oracle条件语句跟循环语句
- 全球知名企业高管预测2019人工智能趋势
- POI 导出Excel文件 设置指定列格式为文本格式
- 阿米洛键盘取消win_阿米洛键盘驱动|阿米洛樱花键盘驱动下载v1.0官方版 - 欧普软件下载...
- 调出软键盘 挤掉标题栏咋办
- pscs6安装序列号