真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java程序怎么通過Rserve遠(yuǎn)程調(diào)用R

本篇內(nèi)容介紹了“Java程序怎么通過Rserve遠(yuǎn)程調(diào)用R”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

本篇內(nèi)容介紹了“Java程序怎么通過Rserve遠(yuǎn)程調(diào)用R”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括青海網(wǎng)站建設(shè)、青海網(wǎng)站制作、青海網(wǎng)頁(yè)制作以及青海網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,青海網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到青海省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

Rserve介紹

        Rserve是一個(gè)基于TCP/IP協(xié)議的,允許R語(yǔ)言與其他語(yǔ)言通信的C/S結(jié)構(gòu)的程序,支持C/C++,Java,PHP,Python,Ruby,Nodejs等。 Rserve提供遠(yuǎn)程連接,認(rèn)證,文件傳輸?shù)裙δ堋N覀兛梢栽O(shè)計(jì)R做為后臺(tái)服務(wù),處理統(tǒng)計(jì)建模,數(shù)據(jù)分析,繪圖等的任務(wù)。

        詳細(xì)介紹請(qǐng)參照官方網(wǎng)站:https://rforge.net/Rserve/

Rserve安裝

注意:安裝Rserve前需要安裝R,我安裝的是 R-3.1.2-win.exe

Linux系統(tǒng)下建議使用root權(quán)限安裝。下面的內(nèi)容是依據(jù)Windows7系統(tǒng)中安裝過程進(jìn)行描述的。

進(jìn)入R語(yǔ)言解釋器:R

安裝命令:install.packages("Rserve")

然后安裝程序會(huì)提示我們選擇下載鏡像,提示如下:

--- Please select a CRAN mirror for use in this session ---

等我們選擇了鏡像后(測(cè)試時(shí)選擇的是China(xxx)),安裝程序便進(jìn)行下載安裝,最終會(huì)輸出如下的信息(Linux下的輸出信息或有不同):

說明Rserve安裝成功,安裝路徑為:%R_HOME%/library/Rserve目錄。

啟動(dòng)Rserve服務(wù)

在Windows命令窗口進(jìn)入R_HOME/library/Rserve/libs/i386目錄中執(zhí)行如下命令(我的Windows7是32位的,如果是64位系統(tǒng)對(duì)應(yīng)目錄為R_HOME/library/Rserve/libs/x64)一定要在dos窗口下進(jìn)入該目錄,不然以下命令不識(shí)別:

R CMD Rserve   注意:如果允許IP遠(yuǎn)程連接要使用 R CMD Rserve --RS-enable-remote

R將作出如下應(yīng)答:

說明Rserve啟動(dòng)成功(端口6311),可以進(jìn)行連接測(cè)試了。

注意:如果執(zhí)行R CMD Rserve命令報(bào)錯(cuò),說明R不認(rèn)識(shí)此命令,需要配置R的環(huán)境變量,具體如下:

R_HOME   R的安裝目錄(我的安裝目錄為: C:\Program Files\R\R-2.15.2)

path中添加

C:\Program Files\R\R-2.15.2\bin;

C:\Program Files\R\R-2.15.2\bin\x64

Java遠(yuǎn)程連接Rserve
下載依賴jar包,地址:http://www.rforge.net/Rserve/files/

共兩個(gè)jar包,下載完成后將它們加入到項(xiàng)目的classpath中即可:

? REngine.jar

? RserveEngine.jar

也可以到Rserve安裝目錄中尋找,比如:R_HOME/library/Rserve/java目錄中就有相關(guān)jar包,名字略有不同,經(jīng)測(cè)試可以使用:

簡(jiǎn)單的測(cè)試代碼:

package com.zyh.up.general.rjava;  

import org.rosuda.REngine.REXPMismatchException;  

import org.rosuda.REngine.Rserve.RConnection;  

import org.rosuda.REngine.Rserve.RserveException;  

public class RserveBegin {  

    public static void main(String[] args) {  

        try {  

            callRserve();  

        } catch (RserveException e) {  

            e.printStackTrace();  

        } catch (REXPMismatchException e) {  

            e.printStackTrace();  

        }  

    }  

    static void callRserve() throws RserveException, REXPMismatchException {  

        RConnection rConnection = new RConnection("192.168.101.122"); //直接寫IP如果報(bào)錯(cuò),說明沒有使用 R CMD Rserve --RS-enable-remote 的方式啟動(dòng)

        String rv = rConnection.eval("R.version.string").asString();  

        System.out.println(rv);  

        double [] arr = rConnection.eval("rnorm(10)").asDoubles();  

        for(double d : arr) {  

            System.out.println(d);  

        }  

    }  

}  

測(cè)試可以通過,程序?qū)⑤敵鯮語(yǔ)言版本信息及10個(gè)Double類型的數(shù)字。

Java遠(yuǎn)程執(zhí)行R腳本

上面的示例只是執(zhí)行R命令,但如果我們?cè)谏戏胖肦腳本又該如何執(zhí)行該腳本或調(diào)用其中的函數(shù)呢?

有兩種方法可以完成上面的問題。

假如我們定義了一個(gè)R腳本area.R,其中定義了一個(gè)方法area,該方法接收一個(gè)半徑值然后計(jì)算對(duì)應(yīng)面積并返回,腳本內(nèi)容非常簡(jiǎn)單:

area<-function(r){pi*r^2}  

 

下面描述一下如何調(diào)用這個(gè)腳本中的area函數(shù),并獲取其返回值。
第一種方法就是直接用source函數(shù)將area.R腳本加載上來,然后就可以像調(diào)用R語(yǔ)言內(nèi)置命令/函數(shù)一樣調(diào)用腳本中的area方法了。這樣做有一個(gè)缺點(diǎn)就是每建立一次Java與R之間的連接就需要調(diào)用source函數(shù)一次。

示例代碼:

package com.zyh.up.general.rjava;  

import org.rosuda.REngine.REXP;  

import org.rosuda.REngine.REXPMismatchException;  

import org.rosuda.REngine.Rserve.RConnection;  

import org.rosuda.REngine.Rserve.RserveException;  

public class RserveBegin {  

    public static void main(String[] args) {  

        try {  

            callRScript();  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

    static void callRScript() throws RserveException, REXPMismatchException {  

        RConnection rc = new RConnection("192.168.101.122");//直接寫IP如果報(bào)錯(cuò),說明沒有使用 R CMD Rserve --RS-enable-remote 的方式啟動(dòng)

        // source函數(shù)需要給出R腳本路徑, 注意傳入轉(zhuǎn)義的引號(hào)  

        rc.eval("source("/home/hadoop/wangfeng/javaR/area.R")");  

        REXP rexp = rc.eval("area(10)");  

        System.out.println("Area of 10 is " + rexp.asDouble());  

    }  

}  

代碼測(cè)試通過。


網(wǎng)頁(yè)標(biāo)題:Java程序怎么通過Rserve遠(yuǎn)程調(diào)用R
本文鏈接:http://weahome.cn/article/ichjoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部