Запуск R в Java
Сначала установите пакет "Rserve" в R.
Если вы используете графический интерфейс RGui, это можно сделать в строке меню в разделе Пакеты - Установить пакеты. Если вы используете чистую консоль R, можно воспользоваться следующей командой:
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.
Шаг 2: Напишите программу на Java
Сначала импортируйте две библиотеки jar, упомянутые ранее.
После импорта мы познакомимся с ключевым классом: RConnection. Этот класс можно использовать для подключения к Rserve.
Теперь давайте использовать R в Java для вычисления обратной матрицы:
![]()
Пример
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() вычисляет обратную матрицу для матрицы m1 в R
// И возвращает результат. Функция 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) {
e.printStackTrace();
} finally {
if (rcon != null) rcon.close();
}
}
}
Результат выполнения:
-1.9999999999999998 1.0 1.4999999999999998 -0.49999999999999994
Очевидно, результат верен, но всё же это числа с плавающей запятой, поэтому напечатанный вывод может выглядеть не очень красиво; это не влияет на использование данных.
Другие расширения