잡다한 IT

Java 에서 Rserve 로 R 사용하기

ssamhago 2023. 4. 5. 16:19
728x90
320x100

R

 

 

Rserve는 R과 통신하기 위해 Java 프로그램 내에서 사용되는 클라이언트 jar를 제공합니다. 

Rserve 다운로드 페이지 에서 두 파일을 모두 다운로드할 수 있습니다. 

REngine.jar 및 RserveEngine.jar을 Java 프로젝트 라이브러리 폴더에 추가합니다.

 

Rserve를 설치한 후에는 serve를 시작해야 합니다. 
R 콘솔에 다음 명령을 입력하여 Rserve 패키지를 가져오고 시작합니다.


R명령을 입력하여 R 콘솔을 실행 후,

# R

 

R콘솔에서 Rserve를 실행합니다.

> library(Rserve)
> Rserve(port=6311, args="--RS-conf /etc/Rserv.conf --no-save")

 


Java에서 Rserve로 R을 사용하는 예제는 다음과 같습니다.

import org.rosuda.REngine.REXP;
import org.rosuda.REngine.Rserve.RConnection;

public class Rserve {
   public static void main(String a[]) {
      RConnection connection = null;

      try {
         /* Create a connection to Rserve instance running
         * IP Addr, UserID, Password required (/etc/Ruser.txt)
         */
         connection = new RConnection("IP Addr", 6311);
         connection.login("UserID","Password");
         String vector = "c(1,2,3,4)";
         connection.eval("meanVal=mean(" + vector + ")");
         double mean = connection.eval("meanVal").asDouble();
         System.out.println("The mean of given vector is=" + mean);

         REXP x = connection.eval("R.version.string");
         System.out.println(x.asString());

         double[] myvalues = {1.0, 1.5, 2.2, 0.5, 0.9, 1.12};
         connection.assign("myvalues", myvalues);
         x = connection.eval("mean(myvalues)");
         System.out.println(x.asDouble());

         x = connection.eval("sd(myvalues)");
         System.out.println(x.asDouble());

     } catch (Exception e) {
        e.printStackTrace();
    }finally{
        connection.close();
    }
  }
}

-- 결과 --
The mean of given vector is=2.5
R version 3.6.0 (2019-04-26)
1.2033333333333334
0.5858896369340105

 

 

Linux (CentOS 7), R / Rserve 설치하기

 

Linux (CentOS 7), R / Rserve 설치하기

R 설치하기 yum 툴을 사용하여 R설치를 진행할 수 있다. # yum install R 설치완료 후, R명령을 입력하여 R 콘솔을 실행 할 수 있다. # R R version 3.6.0 (2019-04-26) -- "Planting of a Tree" Copyright (C) 2019 The R Foundatio

r-ayo.com

 

728x90
반응형