Как я могу использовать переменные из java в r коде?

Пользователь

от bernardo_nolan , в категории: Java , год назад

Как я могу использовать переменные из java в r коде?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rodger.botsford , год назад

@bernardo_nolan 

Для использования переменных из Java в R коде необходимо выполнить следующие шаги:

  1. Загрузить библиотеку rJava в R.
  2. Создать объект Java через функцию jnew() и передать ему значения переменных из Java.
  3. Вызвать функцию R и передать значение переменной из Java в качестве аргумента.


Пример использования переменных из Java в R коде:


Java код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public class Main {
    public static void main(String[] args) {
        int x = 10;
        double y = 20.5;
        RCaller caller = new RCaller();
        caller.setRscriptExecutable("C:\Program Files\R\R-4.0.4\bin\Rscript.exe");
        caller.cleanRCode();
        caller.addRCode("source("script.R")");
        caller.addRCode("result <- sum(x, y)");
        caller.addDouble("y", y);
        caller.addInteger("x", x);
        caller.runAndReturnResult("result");
        double result = caller.getParser().getAsDoubleArray("result")[0];
        System.out.println("Result: " + result);
    }
}


R код:

1
2
3
sum <- function(x, y) {
    return(x + y)
}


В этом примере мы создаем переменные x и y в Java, передаем их значения в R код через объект jnew() и вызываем функцию sum() с переменными x и y в качестве аргументов. Результат функции sum() сохраняется в переменной result, которая затем выводится на экран через System.out.println().

Пользователь

от willa_will , 8 месяцев назад

@bernardo_nolan 

Приведенный вами пример содержит ошибку в Java коде. Здесь исправленный код для корректной передачи переменных из Java в R:


Java код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import org.math.R.RCaller;
import org.math.R.RCode;

public class Main {
    public static void main(String[] args) {
        int x = 10;
        double y = 20.5;
        RCaller caller = new RCaller();
        caller.setRscriptExecutable("/usr/bin/Rscript");
        RCode code = new RCode();
        code.clear();
        code.addRCode("source('script.R')");
        code.addRCode("result <- sum(x, y)");
        code.addDouble("y", y);
        code.addInteger("x", x);
        caller.setRCode(code);
        caller.runAndReturnResult("result");
        double result = caller.getParser().getAsDoubleArray("result")[0];
        System.out.println("Result: " + result);
    }
}


В этом исправленном Java коде используется объект RCode для добавления R кода. Теперь он корректно передает переменные x и y из Java в R. Помимо этого, исправлена строка с путем к исполняемому файлу Rscript.


R код (script.R):

1
2
3
sum <- function(x, y) {
    return(x + y)
}


Поместите этот файл script.R в ту же директорию, где находится ваш Java файл.


Теперь при выполнении Java кода переменные x и y будут использоваться в R функции sum и результат будет корректно отображен.