Java调用R脚本的方法总结

您所在的位置:网站首页 java编写脚本常用的命令是 Java调用R脚本的方法总结

Java调用R脚本的方法总结

2024-06-17 05:11:18| 来源: 网络整理| 查看: 265

0 前言

R是一种非常方便易用的绘图、统计分析、ML算法设计方面的脚本语言。实际中有这样一种场景:算法工程师用R搭建了机器学习算法模型,想用于javaweb之中但是又不想重新用java写一遍算法模型,那么可以考虑java程序中直接调用R的脚本。JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统。 本文将搞清楚如下几个问题: 1)java调用R的方式有哪些及每种方式如何使用? 2)这些调用方式的有哪些优缺点? 下面开始。

1 java调用R的两种方式 1.1 远程调用模式(使用Rserve)

Rserve是一个基于TCP/IP的服务器,通过二进制协议传输数据,可以提供远程连接,使得客户端语言能够调用R。   Rserve作为一个package发布在CRAN上,在服务端计算机安装R之后可以直接使用install.packages(“Rserve”)进行安装。需要使用时在R控制台下加载该包,然后输入命令Rserve(),开启服务器就可以供客户端调用。   首先建立一个新的连接,然后就可以使用eval之类的方法将R中的表达式传到服务器端,通过R求值后传回JAVA中REXP类型的变量,然后打印出来,整个过程非常简单。由于不需要对R进行初始化,因此速度会比较快。在linux等其他系统下可以同时建立多个连接,但是在Windows下只允许同时打开一个连接,后续的连接都会共有相同的命名空间。

1.1.1 Rserve的安装、启动、关闭方法

  方法一:   准备工作:必须先安装并配置了R语言,可去官网https://www.r-project.org下载安装。     在命令行窗口依次执行如下命令:     每次启动r虚拟机时:r     第一次安装Rserve包时: install.packages(“Rserve”)     第一次加载Rserve包时:library(Rserve)     每次需要启动Rserve服务:Rserve()

    关闭Rconnection连接:     关闭Rconnection连接用rc.close();   方法二:   使用Rstudio软件直接安装Rserve的包。   操作略。   

1.1.2 自定义Rserve的配置文件

1)查看Rserve的help选项,Rserve包被安装在R的安装目录的library文件夹下,命令如下图所示。 这里写图片描述 2)查看Rserve的配置项 这里写图片描述 配置项含义:

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

3)新建自定义Rserve配置文件Rserv.cfg(可先创建Rserv.txt添加内容后改后缀为cfg),该配置文件会覆盖Rserve的默认配置,文件位置如下图。 这里写图片描述 打开Rserv.cfg,其内容设置如下:

workdir /tmp/Rserv remote enable fileio enable interactive yes port 6311 maxinbuf 262144 encoding utf8 control enable source start.R plaintext enable

该自定义配置项包含了一个Rserve启动脚本start.R,该脚本可用于启动Rserve时输出提示信息,新建该脚本文件并输入内容:

cat("This is my Rserve!") print(paste("Rserve Server start at ",Sys.time()))

注:Rserve的服务器默认端口号是6311,当然用户也可以指定其他端口号。

1.1.3 Rserve的使用方法

1) java项目调用Rserve需要三个jar文件:REngine.jar RserveEngine.jar Rserve.jar 常用类及方法如下:

Rconnection():连接R服务 eval():执行R语句,返回REXP类型数据 assgin():声明变量 REXP类:其提供了asInteger(), asIntegers(), asString(), asDouble(), asDoubles(), asList()等方法将REXP类型数据转换成java相应类型的数据 2) 测试代码1,打印R版本信息:

package com.rTest; import org.rosuda.REngine.REXP; import org.rosuda.REngine.Rserve.RConnection; public class Test { public static void main(String[] args) { RConnection rc = null try { rc = new RConnection();//建立与Rserve的连接 REXP x = c.eval("R.version.string");//执行R语句 System.out.println(x.asString()); } catch (Exception e) { e.printStackTrace(); } finally{ rc.close();//关闭与Rserve的连接 } } }

3) 测试代码2,调用R文件中自定义函数: 创建R文件test.R

   myFunc


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭