@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
и результат будет корректно отображен.