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

Вернуться в верхнюю часть

Сначала установите пакет "Rserve" в R.

Если вы используете визуальный интерфейс RGui, вы можете выполнить этот шаг в меню "Пакеты" - "Установить пакет". Если вы используете чистый R Console, вы можете использовать следующую команду:

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

После завершения установки Rserve в корневой каталог R будет каталог library, в котором вы найдете каталог Rserve/java, где найдете два файла: REngine.jar и Rserve.jar.

Эти два файла являются библиотеками интерфейсов R в Java.

Внимание:Java не может использовать функции R в отрыве от системы R!

Шаг 1: Запуск Rserve

Войдите в R и введите следующий код, чтобы запустить Rserve:

library("Rserve")
Rserve()

Если запуск успешен, R выведет путь к Rserve.

Второй шаг: написать Java программу

Сначала импортируем два jar библиотеки.

После импорта мы знакомимся с ключевой классом: RConnection, который может использоваться для подключения к Rserve.

Сейчас мы используем R в Java для выполнения обратной матричной операции:

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
            // Здесь создается матрица m1
            rcon.eval("m1 = matrix(c(1, 2, 3, 4), 2, 2, byrow=TRUE)");
            
            // Возврат результатов, функция asDoubleMatrix преобразует данные
            // Двумерные массивы double в Java для представления матриц
            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();
                catch (Exception e) {
            if (rcon != null) rcon.close();
        }
            e.printStackTrace();
        finally {
            }
        if (rcon != null) rcon.close();
    if (rcon != null) rcon.close();
if (rcon != null) rcon.close();

}

Результат выполнения:    
-1.9999999999999998    1.0

1.4999999999999998    -0.49999999999999994