@bernardo_nolan
Для использования переменных из Java в R коде необходимо выполнить следующие шаги:
Пример использования переменных из 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().
@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 и результат будет корректно отображен.