java r.java_解惑rJava R与Java的高速通道(1)_weixin_39658759的博客-程序员宅基地

技术标签: java r.java  

前言

Java语言在工业界长期处于霸主地位,Java语法、JVM、JDK、Java开源库,在近10年得到了爆发式的发展,几乎覆盖了应用开发的所有领域。伴随着Java的全领域发展,问题也随之而来了。语法越来越复杂,近似的项目越来越多,学好Java变得很难。对于没有IT背景的统计人员,学用Java更是难于上青天。

R一直是统计圈内处于佼佼者的语言,语法简单,学习曲线不太长也不太陡。如果能结合Java的通用性和R的专业性,碰撞出的火花,将会缤纷绚烂。

本文将介绍R与Java连接的高速通道,rJava通信方案。另外一篇文章介绍的Rserve通信方案,请参考: Rserve与Java的跨平台通信

cd2dc3ac14e800283206f4603e905919.png

1. rJava介绍

rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法。

rJava还提供了Java调用R的功能,是通过JRI(Java/R Interface)实现的。JRI现在已经被嵌入到rJava的包中,我们也可以单独试用这个功能。现在rJava包,已经成为很多基于Java开发R包的基础功能组件。

正式由于rJava是底层接口,并使用JNI作为接口调用,所以效率非常高。在JRI的方案中,JVM直接通过内存直接加载RVM,调用过程性能几乎无损耗,因此是非常高效连接通道,是R和Java通信的首选开发包。

2. rJava安装

系统环境:

Linux Ubuntu 12.04.2 LTS 64bit server

R version 3.0.1 64bit

Java (Oracle SUN) 1.6.0_29 64bit Server VM

~ uname -a

Linux conan3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan2517:13:26UTC2013x86_64 x86_64 x86_64 GNU/Linux

~ cat /etc/issue

Ubuntu12.04.2LTS \n \l

~ R --version

R version3.0.1(2013-05-16) --"Good Sport"

Copyright (C)2013The R FoundationforStatistical Computing

Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.

You are welcome to redistribute it under the terms of the

GNU General Public License versions2or3.

For more information about these matters see

http://www.gnu.org/licenses/.

~ java -version

java version"1.6.0_29"

Java(TM) SE Runtime Environment (build1.6.0_29-b11)

Java HotSpot(TM)64-Bit Server VM (build20.4-b02, mixed mode)

rJava安装

#配置rJava环境

~ sudo R CMD javareconf

#启动R

~ sudo R

> install.packages("rJava")

installing via'install.libs.R'to /usr/local/lib/R/site-library/rJava

** R

** inst

** preparingpackageforlazy loading

** help

*** installing help indices

** buildingpackageindices

** testingifinstalledpackagecan be loaded

* DONE (rJava)

The downloaded source packages are in

‘/tmp/RtmpiZyCE7/downloaded_packages’

3. rJava实现R调用Java

在R环境中,使用rJava包编程

#加载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 

> 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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39658759/article/details/114409841

智能推荐

华为mate30epro和mate30pro的区别 购买哪个性价比高?_听教主说的博客-程序员宅基地

开门见山,实际上,Mate30E Pro 5G手机的规格跟去年的Mate30 Pro 5G手机基本一致,主要是处理器的变动,从麒麟990 5G变成了麒麟990E 5G。麒麟990E的GPU是14核Mali-G76,NPU为大核+微核的双核达芬奇架构。相比之下,麒麟990 5G是16核Mali-G76,NPU是双核+微核,也就是说,麒麟990E与麒麟9000E的做法,减少了GPU核心及NPU核心。CPU没有变化。 7nm EUV工艺仍然是8核架构,具有2个超大核Cortex-76内核,其频率为2.86 G

汽车行人检测_QQ459592880的博客-程序员宅基地

算法采 用先进的深度学习来实现汽车行人识别,每秒达到10帧左右..算法应用之前 ,需要对图片进行预处理,做图像增强,以提高准确率....做增强之后,进行图像训练,训练的总样本大概有50万张,总共训练了7天多,然后进行剪枝,以提高在嵌入式上运行速度,最终提高了大概30%的速度...

1. C++常用的遍历方法_c++遍历_XDpawn的博客-程序员宅基地

1. C++常用的遍历方法遍历:指的是集合中每个元素只访问一次。常见的方法有一下六种。下面以字符串遍历与数组(向量)遍历为例【字符串遍历】string str("XDU");传统Cfor写法for(size_t i = 0; i < str.size(); i++){ cout << str[i] << endl;}size_t:​ 一个基本的无符号整型的C/C++类型,它是sizeof操作返回的结果,该类型的大小可选择。因此,它可以存储在理论上可_c++遍历

WAS内存溢出处理方法_was内存溢出怎么解决_我很低调1234的博客-程序员宅基地

出现的现象:生成heapdump文件,及javacore文件。且javacore中有明显OutOfMemory字样。有时内存溢出会导致WAS挂了,有时不会挂,会自动恢复。如果WAS挂了,重启即可,不用额外操作收集信息。后续分析日志:下载native_stderr.log文件,在/was7/profiles/AppSrv01/logs/server1下,与SystemOut.log同一目..._was内存溢出怎么解决

计算机组成原理课程设计网络工程,计算机组成原理课程设计指导书计算机科学与技术网络工程专业.doc..._weixin_39998541的博客-程序员宅基地

计算机组成原理课程设计指导书计算机科学与技术网络工程专业PAGEPAGE 2武汉工业学院计算机组成原理课程设计指导书计算机组成原理课程设计指导书基于EDA技术的单周期中央处理器的设计与实现适用专业:计算机科学与技术专业网络工程专业及相关专业制 定 人:蒋丽华教 研 室:计算机科学与技术教研室计算机科学与信息工程系2009 年12月前言《计算机组成原理》是计算机与信息工程系的一门核心专业基础课程。...

安装memcached.exe时, msvcr71.dll丢失怎么解决_weixin_30940783的博客-程序员宅基地

在安装memcached.exe时, 报msvcr71.dll丢失怎么解决呢?先下载缺少的msvcr71.dll文件,复制到对应的文件夹中问题解决下载地址:http://webjss.u.qiniudn.com/Msvcp71.dll-And-Msvcr71.dll-files.zip32位系统:复制到c:/windwos/system32中64位系统:复制到c:/windo..._memcached 由于找不到msvcr71.dll,无法继续执行代码

随便推点

解决Spring Spring Data JPA 错误: Page 1 of 1 containing UNKNOWN instances_禅与计算机程序设计艺术的博客-程序员宅基地

解决Spring Spring Data JPA 错误: Page 1 of 1 containing UNKNOWN instancesSpringBoot 整合 Spring-Data-JPA 的时候出现此问题:前端 js 代码$(function () { var searchText = $('.search').find('i..._page 1 of 1 containing unknown instances

hive-UDF-计算某个标记值的数量;ab值检测_hive怎么统计某个字符的数量-程序员宅基地

1、主要是计算某个字段值里面的标记值,比如某个字符串有多少个逗号package udf;import com.aliyun.odps.udf.UDF;public class MarkCount extends UDF{ public Long evaluate(String text,String sub){ int count =0, start =0; while((start=text.indexOf(sub,start))>=0){ _hive怎么统计某个字符的数量

ubuntu 18.04.1安装配置caffe2_ubuntu18 caffe2安装_橘的皮瓜着披。的博客-程序员宅基地

1.ubuntu下安装软件已不容易,安装一些坑一点的软件更不容易,比如某book的caffe2,在ubuntu16.04上严格按照官网给出的安装教程安装出错,又重装了ubuntu18.04,安装官网教程安装也出错,看来官网的东西也不一定适合每一台电脑。2.安装过程首先参考官方教程,安装一些依赖库:sudo apt-get updatesudo apt-get install -y --no..._ubuntu18 caffe2安装

Matplotlib图形内的文字注释、箭头(三)_在axes的任意位置添加注释“学号”_草莓女孩的博客-程序员宅基地

import numpy as npimport matplotlib.pyplot as plt''''---text():在Axes对象的任意位置添加文字---xlabel():为X轴添加标签---ylabel():为Y轴添加标签---title():为Axes对象添加标题---legend():为Axes对象添加图例---figtext():在Figure对象的任意位置添..._在axes的任意位置添加注释“学号”

选择波特兰市做未来“总部” 专访Linux“现任总统”Linus Torvalds_cuanku6549的博客-程序员宅基地

选择波特兰市做未来“总部” 专访Linux“现任总统”Linus Torvalds[@more@]今年36岁的芬兰人Linus Torvalds是Linux操作系统的创始人。他于1991年创建的Linux操作系统,不断获得互联网..._linus 波特兰

domino 启动方式更改_domino server 启动问题_bluecard2008的博客-程序员宅基地

手动将Domino server 添加成Windows 服务一、Domino服务器初次启动时,会弹出以下对话框:如果选择 "Start Domino as a regular application"就会有一个控制台窗口;如果选择"Start Domino as a Windows service",则Domino将以Windows service的方式启动,此时如果我们到系统管理工具的Services工具中查看,会发现Domino server已经作为Windows的服务列在其中。其._domino server 启动问题

推荐文章

热门文章

相关标签