成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解惑rJava R與Java的高速通道

大數(shù)據(jù)
Java語言在工業(yè)界長期處于霸主地位,Java語法、JVM、JDK、Java開源庫,在近10年得到了爆發(fā)式的發(fā)展,幾乎覆蓋了應(yīng)用開發(fā)的所有領(lǐng)域。伴隨著Java的全領(lǐng)域發(fā)展,問題也隨之而來了……

前言

Java語言在工業(yè)界長期處于霸主地位,Java語法、JVM、JDK、Java開源庫,在近10年得到了爆發(fā)式的發(fā)展,幾乎覆蓋了應(yīng)用開發(fā)的所有領(lǐng)域。伴隨著Java的全領(lǐng)域發(fā)展,問題也隨之而來了。語法越來越復(fù)雜,近似的項目越來越多,學(xué)好Java變得很難。對于沒有IT背景的統(tǒng)計人員,學(xué)用Java更是難于上青天。

R一直是統(tǒng)計圈內(nèi)處于佼佼者的語言,語法簡單,學(xué)習(xí)曲線不太長也不太陡。如果能結(jié)合Java的通用性和R的專業(yè)性,碰撞出的火花,將會繽紛絢爛。

本文將介紹R與Java連接的高速通道,rJava通信方案。另外一篇文章介紹的Rserve通信方案,請參考: Rserve與Java的跨平臺通信

rjava

1. rJava介紹

rJava是一個R語言和Java語言的通信接口,通過底層JNI實現(xiàn)調(diào)用,允許在R中直接調(diào)用Java的對象和方法。

rJava還提供了Java調(diào)用R的功能,是通過JRI(Java/R Interface)實現(xiàn)的。JRI現(xiàn)在已經(jīng)被嵌入到rJava的包中,我們也可以單獨試用這個功能。現(xiàn)在rJava包,已經(jīng)成為很多基于Java開發(fā)R包的基礎(chǔ)功能組件。

正式由于rJava是底層接口,并使用JNI作為接口調(diào)用,所以效率非常高。在JRI的方案中,JVM直接通過內(nèi)存直接加載RVM,調(diào)用過程性能幾乎無損耗,因此是非常高效連接通道,是R和Java通信的***開發(fā)包。

2. rJava安裝

系統(tǒng)環(huán)境:

  • Linux Ubuntu 12.04.2 LTS 64bit server
  • R version 3.0.1 64bit
  • Java (Oracle SUN) 1.6.0_29 64bit Server VM
  1. ~ uname -a  
  2. Linux conan 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux  
  3.  
  4. ~ cat /etc/issue  
  5. Ubuntu 12.04.2 LTS \n \l  
  6.  
  7. ~ R --version  
  8. R version 3.0.1 (2013-05-16) -- "Good Sport" 
  9. Copyright (C) 2013 The R Foundation for Statistical Computing  
  10. Platform: x86_64-pc-linux-gnu (64-bit)  
  11.  
  12. R is free software and comes with ABSOLUTELY NO WARRANTY.  
  13. You are welcome to redistribute it under the terms of the  
  14. GNU General Public License versions 2 or 3.  
  15. For more information about these matters see  
  16.  
  17. http://www.gnu.org/licenses/.  
  18.  
  19. ~ java -version  
  20. java version "1.6.0_29" 
  21. Java(TM) SE Runtime Environment (build 1.6.0_29-b11)  
  22. Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode) 

rJava安裝

 

  1.  
  2. #配置rJava環(huán)境  
  3. ~ sudo R CMD javareconf  
  4.  
  5. #啟動R  
  6. ~ sudo R  
  7. > install.packages("rJava")  
  8. installing via 'install.libs.R' to /usr/local/lib/R/site-library/rJava  
  9. ** R  
  10. ** inst  
  11. ** preparing package for lazy loading  
  12. ** help  
  13. *** installing help indices  
  14. ** building package indices  
  15. ** testing if installed package can be loaded  
  16. * DONE (rJava)  
  17.  
  18. The downloaded source packages are in  
  19.         ‘/tmp/RtmpiZyCE7/downloaded_packages’  

 

3. rJava實現(xiàn)R調(diào)用Java

在R環(huán)境中,使用rJava包編程

 

  1.  
  2. #加載rJava包  
  3. > library(rJava)  
  4. > search()  
  5.  [1".GlobalEnv"        "package:rJava"     "package:stats" 
  6.  [4"package:graphics"  "package:grDevices" "package:utils" 
  7.  [7"package:datasets"  "package:methods"   "Autoloads" 
  8. [10"package:base" 
  9.  
  10. #啟動JVM  
  11. > .jinit()  
  12.  
  13. #聲明并賦值到字符串  
  14. > s <- .jnew("java/lang/String""Hello World!")  
  15. > s  
  16. [1"Java-Object{Hello World!}" 
  17.  
  18. #查看字符串長度  
  19. > .jcall(s,"I","length")  
  20. [112 
  21.  
  22. #索引World的位置  
  23. > .jcall(s,"I","indexOf","World")  
  24. [16 
  25.  
  26. #查看concat的方法聲明  
  27. > .jmethods(s,"concat")  
  28. [1"public java.lang.String java.lang.String.concat(java.lang.String)" 
  29.  
  30. #使用concat方法連接字符串  
  31. > .jcall(s,"Ljava/lang/String;","concat",s)  
  32. [1"Hello World!Hello World!" 
  33.  
  34. #打印字符串對象  
  35. > print(s)  
  36. [1"Java-Object{Hello World!}" 
  37.  
  38. #打印字符串值  
  39. > .jstrVal(s)  
  40. [1"Hello World!" 

 

rJava優(yōu)化過的方法調(diào)用,用$來調(diào)用方法

 

  1.  
  2. #同.jcall(s,"I","length")  
  3. > s$length()  
  4. [112 
  5.  
  6. #同.jcall(s,"I","indexOf","World")  
  7. > s$indexOf("World")  
  8. [16 

 

#p#

4. rJava(JRI)實現(xiàn)Java調(diào)用R (win7)

在win7中安裝rJava

系統(tǒng)環(huán)境:

  • win7 64bit 旗艦版
  • R 3.0.1
  • Java 1.6.0_45

設(shè)置環(huán)境變量

 

  1.  
  2. PATH: C:\Program Files\R\R-3.0.1\bin\x64;D:\toolkit\java\jdk6\bin;;D:\toolkit\java\jdk6\jre\bin\server  
  3. JAVA_HOME: D:\toolkit\java\jdk6  
  4. CLASSPATH: C:\Program Files\R\R-3.0.1\library\rJava\jri  

 

在R中安裝rJava

 

  1. > install.packages("rJava")  
  2.  
  3. #加載rJava  
  4. > library(rJava)  
  5. > .jinit()  
  6.  
  7. #R調(diào)用Java變量測試  
  8. > s <- .jnew("java/lang/String""Hello World!")  
  9. > s  
  10. [1"Java-Object{Hello World!}" 

 

啟動Eclipse編寫程序

rjava2

 

  1. package org.conan.r.rjava;  
  2.  
  3. import org.rosuda.JRI.Rengine;  
  4.  
  5. public class DemoRJava {  
  6.  
  7.     public static void main(String[] args) {  
  8.         DemoRJava demo = new DemoRJava();  
  9.         demo.callRJava();  
  10.     }  
  11.  
  12.     public void callRJava() {  
  13.         Rengine re = new Rengine(new String[] { "--vanilla" }, falsenull);  
  14.         if (!re.waitForR()) {  
  15.             System.out.println("Cannot load R");  
  16.             return;  
  17.         }  
  18.           
  19.         //打印變量  
  20.         String version = re.eval("R.version.string").asString();  
  21.         System.out.println(version);  
  22.  
  23.         //循環(huán)打印數(shù)組  
  24.         double[] arr = re.eval("rnorm(10)").asDoubleArray();  
  25.         for (double a : arr) {  
  26.             System.out.print(a + ",");  
  27.         }  
  28.         re.end();  
  29.     }  

 

在Eclipse啟動設(shè)置VM參數(shù):

 

  1. -Djava.library.path="C:\Program Files\R\R-3.0.1\library\rJava\jri\x64" 

 

rjava

運行結(jié)果:

 

  1. R version 3.0.1 (2013-05-16)  
  2. 0.04051018703700011,-0.3321596519938258,0.45642459001166913,-1.1907153494936031,1.5872266854172385,1.3639721994863943,-0.6309712627586983,-1.5226698569087498,-1.0416402147174952,0.4864034017637044

 

打包DemoRJava.jar

在Eclipse中完成打包,上傳到linux環(huán)境,繼續(xù)測試。

5. rJava(JRI)實現(xiàn)Java調(diào)用R (Ubuntu)

新建目錄DemoRJava,上傳DemoRJava.jar到DemoRJava

 

  1. ~ mkdir /home/conan/R/DemoRJava  
  2. ~ cd /home/conan/R/DemoRJava  
  3. ~ ls -l  
  4. -rw-r--r-- 1 conan conan 1328 Aug  8  2013 DemoRJava.jar  

 

運行Jar包

 

  1. ~ export R_HOME=/usr/lib/R  
  2. ~ java -Djava.library.path=/usr/local/lib/R/site-library/rJava/jri -cp /usr/local/lib/R/site-library/rJava/jri/JRI.jar:/home/conan/R/DemoRJava/DemoRJava.jar org.conan.r.rjava.DemoRJava 

 

運行結(jié)果

 

  1. R version 3.0.1 (2013-05-16)  
  2. 0.6374494596732511,1.3413824702002808,0.04573045670001342,-0.6885617932810327,0.14970067632722675,-0.3989493870007832,-0.6148250252955993,0.40132038323714453,-0.5385260423222166,0.3459850956295771

 

我們完成了,R和Java的互調(diào)。包括了R通過rJava調(diào)用Java,Java通過JRI調(diào)用R。并演示了win和linux中的使用方法。

本文出自:http://blog.fens.me/r-rjava-java/

 

責(zé)任編輯:林師授 來源: 張丹的博客
相關(guān)推薦

2009-12-10 11:04:08

Java模塊化OSGiJigsaw

2025-04-27 03:22:00

2011-03-18 14:38:25

云數(shù)據(jù)精細化流控

2024-03-14 08:36:25

MySQLzerofill?數(shù)字

2016-10-14 15:00:45

2017-07-11 16:45:51

Python整數(shù)比較

2017-09-12 15:56:43

邊緣計算云計算架構(gòu)

2017-12-21 10:48:40

2009-07-20 10:36:29

什么是JDBC

2012-03-23 14:02:11

云計算

2010-04-15 16:00:50

無線上網(wǎng)問題

2011-03-22 09:43:06

J-Hi

2013-04-28 11:37:29

華為GSM-R通信網(wǎng)絡(luò)

2010-10-08 14:16:29

2019-04-02 10:50:05

框架Spring開發(fā)

2011-04-07 09:40:57

DataReader鏈接關(guān)閉

2019-03-25 20:46:22

混合IT云計算私有云

2018-06-06 10:14:32

Kafka時間輪任務(wù)

2010-04-07 11:09:53

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 免费在线观看av网址 | 亚洲毛片 | 欧美在线国产精品 | 亚洲一区自拍 | 中文字幕av一区二区三区 | 日韩一区精品 | 久久久久久久久久久久久9999 | 国产精品日韩欧美一区二区三区 | 日韩在线免费视频 | 欧美精品久久久久 | 成人性生交大片免费看r链接 | 久久久久久久久久影视 | 国产在线播放一区二区三区 | 精品久久久久久18免费网站 | 91精品国产综合久久久久久漫画 | 97在线观看 | 精品免费看| 欧美一级在线 | 日韩免费一区 | 国产在线一区二区 | 亚洲www| 中文字幕一区二区在线观看 | 久久久国产一区二区三区 | 欧美精品久久 | 精品区一区二区 | 成人av免费 | 日本黄色免费视频 | 香蕉视频1024| 国产精品国产三级国产aⅴ中文 | 一区二区三区国产好 | 天天摸天天干 | 精品国产一二三区 | 在线播放中文 | 一区二区三区欧美在线 | 国产高清免费 | 久久精品国产精品青草 | 在线免费观看视频黄 | 中文字幕爱爱视频 | 精品久久国产视频 | 九九久久久 | 国产区一区二区三区 |