日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

        歡迎訪(fǎng)問(wèn) 生活随笔!

        生活随笔

        當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

        java

        java的rserve实现_Java 使用 Rserve 实现与 R 的通信

        發(fā)布時(shí)間:2023/12/10 java 39 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 java的rserve实现_Java 使用 Rserve 实现与 R 的通信 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

        Rserve 是一個(gè)基于 TCP/IP 的服務(wù)器程序,它允許其他語(yǔ)言調(diào)用 R 語(yǔ)言。由于 Rserve 采用 C/S (客戶(hù)端/服務(wù)器)的調(diào)用方式,因此客戶(hù)端并不需要鏈接 R 語(yǔ)言庫(kù),客戶(hù)端程序與 R 程序可以實(shí)現(xiàn)低耦合的目的。

        為調(diào)用 R 語(yǔ)言,需要實(shí)現(xiàn)一個(gè)與 Rserve 通信的客戶(hù)端程序,幸運(yùn)的是目前常用的語(yǔ)言包括 C/C++,PHP,Java 等都實(shí)現(xiàn)提供與 Rserve 通信的客戶(hù)端程序。

        本文講述 Java 語(yǔ)言如何利用 Rserve 實(shí)現(xiàn)與 R 語(yǔ)言的通信。

        安裝 Rserve

        假設(shè) R 的運(yùn)行環(huán)境是 CentOS(CentOS 使用yum install R來(lái)安裝 R),在 CentOS 我們已經(jīng)安裝好 R。

        在 Linux 命令行中輸入

        R

        進(jìn)入 R 的交互環(huán)境,然后輸入

        > install.packages("Rserve")

        接下來(lái)就可以安裝 Rserve。

        啟動(dòng) Rserve

        啟動(dòng) Rserve 有兩種方式,一種是在 R 程序中啟動(dòng),另一種是在命令行中啟動(dòng)。

        1. R 程序啟動(dòng) Rserve

        打開(kāi) R 的交互環(huán)境,輸入以下命令:

        library(Rserve)

        Rserve()

        執(zhí)行后,Rserve 便啟動(dòng)起來(lái)。

        2. 命令行啟動(dòng) Rserve

        也可以直接在命令行中輸入:

        R CMD Rserve

        啟動(dòng) Rserve。

        為讓 Rserve 支持遠(yuǎn)程連接,可以加入--RS-enable-remote參數(shù):

        R CMD Rserve --RS-enable-remote

        Java 調(diào)用 R

        使用 IntelliJ IDEA 創(chuàng)建一個(gè) Maven quickstart 項(xiàng)目,然后在 pom.xml 中添加 Java 版本的 Rserve 客戶(hù)端的依賴(lài):

        org.rosuda.REngine

        Rserve

        1.8.1

        然后編寫(xiě)調(diào)用 R 的代碼。

        import org.rosuda.REngine.REXP;

        import org.rosuda.REngine.Rserve.RConnection;

        import org.rosuda.REngine.Rserve.RserveException;

        import org.rosuda.REngine.REXPMismatchException;

        public class RserveDemo {

        public static void main ( String[] args ) throws RserveException, REXPMismatchException

        {

        RserveDemo rserveDemo = new RserveDemo();

        rserveDemo.callRserve();

        }

        private void callRserve() throws RserveException, REXPMismatchException {

        // 連接 Rserve

        RConnection c = new RConnection("120.78.80.23");

        // 輸出 R 的版本

        REXP x = c.eval("R.version.string");

        System.out.println(x.asString());

        // 獲取10個(gè)隨機(jī)數(shù)字

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

        for (double a : arr) {

        System.out.print(a + ",");

        }

        System.out.println();

        // 調(diào)用 R 源文件

        c.eval("source('/home/R/add.R')");

        int sum = c.eval("myAdd(1, 2)").asInteger();

        System.out.println(sum);

        }

        }

        在上述代碼中,我們首先創(chuàng)建了與 Rserve 的連接。由于 Java 代碼與 Rserve 不在同一臺(tái)機(jī)器,所以我們指定了 Rserve 的機(jī)器 IP 地址。

        接下來(lái),我們調(diào)用了 R 語(yǔ)言的一些方法,包括輸出 R 語(yǔ)言的版本,獲取10個(gè)隨機(jī)數(shù)字。

        最后,我們演示了如何調(diào)用 R 語(yǔ)言源代碼。在 Linux 平臺(tái)我們先創(chuàng)建一個(gè) add.R 的文件,然后編寫(xiě) R 代碼:

        myAdd

        sum

        return (sum)

        }

        add.R 源代碼放置在目錄 /home/R 下。R 語(yǔ)言中使用source('/home/R/add.R')可以執(zhí)行源代碼,在 Java 代碼中,我們先執(zhí)行 add.R 源代碼,接下來(lái)調(diào)用了myAdd()函數(shù)。

        執(zhí)行以上代碼,輸出:

        R version 3.5.0 (2018-04-23)

        -2.533623370009491,0.7961512738732901,0.7122860585280386,-0.16063583146722446,-0.598315148752494,0.09854836382399271,-1.0914493041810422,-1.5425930835313806,0.584390936738569,0.35687345246533786,

        3

        參考資料

        總結(jié)

        以上是生活随笔為你收集整理的java的rserve实现_Java 使用 Rserve 实现与 R 的通信的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

        如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。