欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java調(diào)用R語言實例講解

 更新時間:2021年03月16日 09:41:34   作者:水木山川  
這篇文章主要介紹了Java調(diào)用R語言實例講解,文中代碼講解的很清晰,有需要的同學(xué)可以研究下

R是統(tǒng)計計算的強(qiáng)大工具,JAVA是做應(yīng)用系統(tǒng)的主流語言。JAVA負(fù)責(zé)系統(tǒng)的構(gòu)建,R用來做運(yùn)算引擎,從而實現(xiàn)應(yīng)用型和分析性相結(jié)合的系統(tǒng)。

一、Rserve(遠(yuǎn)程通信模式)

Rserve是一個基于TCP/IP的服務(wù)器,通過二進(jìn)制協(xié)議傳輸數(shù)據(jù),可以提供遠(yuǎn)程連接,使得客戶端語言能夠調(diào)用R。
Rserve作為一個package發(fā)布在CRAN上,可以直接使用install.packages("Rserve")進(jìn)行安裝。需要使用時在R控制臺下加載該包,然后輸入命令Rserve(),開啟服務(wù)器就可以供客戶端調(diào)用。首先建立一個新的連接,然后就可以使用eval之類的方法將R中的表達(dá)式傳到服務(wù)器端,通過R求值后傳回JAVA中REXP類型的變量,然后打印出來,整個過程非常簡單。由于不需要對R進(jìn)行初始化,因此速度會比較快。在其他系統(tǒng)下可以同時建立多個連接,但是在Windows下只允許同時打開一個連接,后續(xù)的連接都會共有相同的命名空間?!?/p>

1、Rserve安裝和啟動(windows環(huán)境)

方法一:前提:安裝并配置了R語言

第一次啟動安裝Rserve包:
install.packages("Rserve")

第一次啟動加載Rserve包:
library(Rserve)

啟動Rserve服務(wù):
Rserve()

關(guān)閉Rconnection連接:
關(guān)閉Rconnection連接用rc.close();

方法二:點擊R工具欄上的“程序包”--》“設(shè)定CRAN鏡像”--》China(xxx) —》確定

點擊【程序包】—》安裝程序包—》選擇 rJava —>OK
點擊【程序包】—》安裝程序包—》選擇 Rserve —>OK

點擊【程序包】—》加載程序包—》選擇 rJava —>OK
點擊【程序包】—》加載程序包—》選擇 Rserve —>OK

安裝命令:install.packages("packageName")
加載命令:library(packageName)

啟動命令:Rserve()

2.Java調(diào)用R

基本方法:
Rconnection:連接R服務(wù)
eval():執(zhí)行R語句
assgin():聲明變量
REXP
asInteger(), asIntegers(), asString(), asDouble(), asDoubles(), asList()獲取相應(yīng)類型的數(shù)據(jù)

引用R架包或者添加maven配置:

<!--REngine Java Interface to R -->
<dependency>
 <groupId>org.rosuda.REngine</groupId>
 <artifactId>REngine</artifactId>
 <version>2.1.0</version>
</dependency>
<dependency>
 <groupId>org.rosuda.REngine</groupId>
 <artifactId>Rserve</artifactId>
 <version>1.8.1</version>
</dependency>

實例1:求一個數(shù)組里面的最大值

//建立連接
RConnection rc=new RConnection();
//構(gòu)建數(shù)據(jù)
int[] datas={314,451,56,24,631};
//聲明變量,相當(dāng)于在R命令行中輸入data<-datas命令
rc.assign("data",datas);
//執(zhí)行R語句,相當(dāng)于在R命令行中輸max(data)命令
REXP rexp=rc.eval("max(data)");
//REXP. asXxx()返回相應(yīng)類型的數(shù)據(jù),如果結(jié)果類型不符會出錯
System.out.println(rexp.asInteger());
rc.close();

實例2:調(diào)用自定義函數(shù)

創(chuàng)建R文件test.R
myFunc<-function(data){
x<-data+2;
}
RConnection rc = new RConnection();
// test.R的路徑
String fileName = "D:\\test.R";
rc.assign("fileName", fileName);
//執(zhí)行test.R腳本,執(zhí)行這一步才能調(diào)用里面的自定義函數(shù)myFunc,如果不行,就在R工具上也執(zhí)行一下test.R腳本
rc.eval("source(fileName)");
String num = "3";
//調(diào)用myFunc函數(shù)
REXP rexp=rc.eval("myFunc("+num+")");
//返回類型是一個整數(shù)類型,所以用asInteger
System.out.println(rexp.asInteger());
rc.close();

在R-x.x.x\library\Rserve\client\java\Rserve\test目錄下有測試用例可以參考。(StartRserve.java是用java啟動Rserve服務(wù),而不用打開R語言來手動啟動。test.java里包含了基本方法的調(diào)試)

二、JRI(嵌入式模式)

JRI,全名是Java/R Interface,是通過調(diào)用R的動態(tài)鏈接庫從而利用R中的函數(shù)等。通過install.packages("rJava")安裝rJava就行,在安裝文件夾中,可以看到一個jri的子文件夾,里面有自帶的例子可以用來測試。
配置環(huán)境變量:在PATH中添加%R_HOME%/bin和%R_HOME%/library/rJava/jri,注意R_HOME的路徑要正確。
安裝rJava
install.packages("rJava")
設(shè)置環(huán)境變量:PATH后添加 %R_HOME%\library\rJava\jri
獲取jar包:把安裝目錄jri文件夾下的JRI.jar、REngine.jar和JRIEngine.jar放進(jìn)Java工程添加到工程中。   

兩種方式優(yōu)缺點比較:

JRI(嵌入式模式)我體會到最大的優(yōu)點是它對中文的支持較好,但是使用JRI模式下很容易造成整個系統(tǒng)的崩潰,比如在java調(diào)用R的時候,中間出現(xiàn)了異?;蛘咤e誤,這些錯誤大致都是致命的,導(dǎo)致java虛擬機(jī)崩潰,從而導(dǎo)致整個系統(tǒng)崩潰
Rserve(遠(yuǎn)程通信模式) 在這種通信模式下,最大的優(yōu)點是javaWeb項目不需要去維護(hù)R的運(yùn)行,通過TCP/IP協(xié)議直接進(jìn)行通訊,但是有一個很大的缺點是它對中文的支持很弱,尤其是在windows的環(huán)境中?;臼遣恢С种形牡模趌inux環(huán)境下,似乎對中文的支持稍微好些。不是完全支持中文的話,對返回有中文或者輸入有中文的系統(tǒng)將是不可用的。

到此這篇關(guān)于Java調(diào)用R語言實例講解的文章就介紹到這了,更多相關(guān)Java調(diào)用R語言內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于R語言lubridate包處理時間數(shù)據(jù)的問題

    關(guān)于R語言lubridate包處理時間數(shù)據(jù)的問題

    這篇文章主要介紹了關(guān)于R語言lubridate包處理時間數(shù)據(jù)的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • R語言中cut()函數(shù)的用法說明

    R語言中cut()函數(shù)的用法說明

    這篇文章主要介紹了R語言中cut()函數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言編程學(xué)習(xí)從Github上安裝包解決網(wǎng)絡(luò)問題

    R語言編程學(xué)習(xí)從Github上安裝包解決網(wǎng)絡(luò)問題

    這篇文章主要為大家介紹了R語言編程從Github上安裝包的過程詳解,這樣可以解決很多網(wǎng)絡(luò)問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • R語言可視化存儲矢量圖實現(xiàn)方式

    R語言可視化存儲矢量圖實現(xiàn)方式

    這篇文章主要為大家介紹了R語言存儲矢量圖的實現(xiàn)方式過程,有需要的朋友可以借鑒參考下,希望能夠有所你幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • R語言創(chuàng)建矩陣的實現(xiàn)方法

    R語言創(chuàng)建矩陣的實現(xiàn)方法

    這篇文章主要介紹了R語言創(chuàng)建矩陣的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語言-如何給直方圖加標(biāo)簽

    R語言-如何給直方圖加標(biāo)簽

    這篇文章主要介紹了R語言-如何給直方圖加標(biāo)簽,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言處理JSON文件的方法

    R語言處理JSON文件的方法

    在本篇文章里小編給大家分享的是一篇關(guān)于R語言處理JSON文件的方法,有興趣的朋友們可以參考下。
    2021-05-05
  • R語言的下載安裝圖文教程講解

    R語言的下載安裝圖文教程講解

    這篇文章主要介紹了R語言的下載安裝圖文教程講解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • R語言關(guān)聯(lián)規(guī)則深入詳解

    R語言關(guān)聯(lián)規(guī)則深入詳解

    這篇文章主要介紹了R語言關(guān)聯(lián)規(guī)則深入詳解,文中內(nèi)容講解的很透徹,有感興趣的同學(xué)可以學(xué)習(xí)下
    2021-03-03
  • 利用R語言繪制時間序列圖的操作

    利用R語言繪制時間序列圖的操作

    這篇文章主要介紹了利用R語言繪制時間序列圖的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評論