Передача данных в памяти скрипту R для создания модели
Я новичок в R и пытался использовать JRI. Я столкнулся со следующим вопросом -
- у меня есть набор значений, полученных в моей программе Java, которые я сохранил в списке.
- у меня есть несколько таких списков - каждый из них представляет функцию.
- я хочу передать эти списки в скрипт R, чтобы создать простую регрессионную модель. Скрипт использует функцию lm ().
Я столкнулся с несколькими скриптами, которые читают из файла и загружают данные использование чтения.table () (или другие эквивалентные функции) перед вызовом ' lm()'. В этом конкретном случае я не хочу записывать в файл (создавать новый файл) и снова читать из этого файла в память - поскольку у меня уже есть данные в памяти.
Есть ли способ передать этот список из Java в R-скрипт напрямую, чтобы его можно было использовать как фрейм данных? Могу ли я передать этот список в качестве аргумента?
Я искал много, но не смог найти ничего похожего. Любой указатели было бы оцененный.
1 ответ:
Очень легко использовать
rJava
.Сторона кода Java
Я создаю фиктивный класс, который генерирует некоторые значения.
public class test_arr { public double[] getValues(int n){ double[] anArray = new double[n]; for(int i =0; i <n;i++) anArray[i] = Math.random(); return anArray; } }
Сторона кода R
Используя пакет
rjava
, я создаю объект R ( указатель на объект java), вызываю генератор и получаю числовые значения.library(rJava) .jinit("PATH_TO_YOR_JAVA_test_arr/bin") # this starts the JVM object <- .jnew("test_arr") nn = object$getValues(5L) [1] 0.3667268 0.3636245 0.6796906 0.3692489 0.4051942
Затем вы делаете регрессию следующим образом:
lm(vv~nn,data=data.frame(vv,nn=runif(10)))