English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java에서 R을操作

먼저, R에서 "Rserve" 소프트웨어 패키지를 설치합니다.

RGui 시각화 인터페이스를 사용하는 경우 메뉴 막대기의 프로그램 - 이 단계를 완료할 수 있는 설치 프로그램입니다. pure R Console을 사용하는 경우 다음 명령어를 사용할 수 있습니다:

install.packages("Rserve", repos = "https://mirrors.ustc.edu.cn/CRAN/)

Reserve 설치가 완료된 후, R의 뿌리 디렉토리에 library 디렉토리가 있으며, 그 안에서 Rserve를 찾습니다./java 디렉토리에 접근하여, 디렉토리 아래에 두 개의 파일이 있습니다: RENgine.jar와 Rserve.jar.

이 두 파일은 Java의 R 인터페이스 라이브러리입니다.

주의:Java는 R 시스템에서 독립적으로 R의 기능을 사용할 수 없습니다!

첫 번째 단계: Reserve 시작

R에 접속하여 다음 코드를 입력하여 Rserve를 시작합니다:

library("Rserve")
Rserve()

성공적으로 시작된 경우, R은 Rserve의 경로를 출력합니다.

두 번째 단계: Java 프로그램 작성

먼저 언제든지 두 개의 jar 라이브러리를 입력합니다.

импорт 이후에, 중요한 클래스인 RConnection을 인식하겠습니다. 이 클래스는 Rserve에 연결할 수 있습니다.

지금 Java에서 R을 사용하여 역행렬 계산을 수행하겠습니다:

import org.rosuda.REngine.Rserve.*;
public class Main {
    public static void main(String[] args) {
        RConnection rcon = null;
        try {
            // Rserve와의 연결을 설정
            rcon = new RConnection("127.0.0.1");
            
            // eval() 함수는 R 실행을 위해 R 문장을 사용
            // 여기서 m1 행렬
            rcon.eval("m1 = matrix(c(1, 2, 3, 4), 2, 2, byrow=TRUE
            
            // solve() 함수는 R에서 m1 행렬의 역행렬로 변환
            // 결과를 반환하고, asDoubleMatrix 함수는 데이터를
            // Java의 double 두차원 배열로 행렬을 표현
            double[][] m1 = rcon.eval("solve(m1).asDoubleMatrix();
            
            // 행렬의 내용 출력
            for (int i = 0; i < m1.length; i++) {
                for (int j = 0; j < m1[0].length; j++)
                    System.out.print(m1[i][j] + "\t");
                System.out.println();
            }
        }
            e.printStackTrace();
        }
            if (rcon != null) rcon.close();
        }
    }
}

실행 결과:

-1.9999999999999998    1.0    
1.4999999999999998    -0.49999999999999994

결과는 명확합니다만, float이므로 출력이 어색할 수 있습니다. 데이터 사용에는 영향을 미치지 않습니다.