Передача данных в памяти скрипту R для создания модели


Я новичок в R и пытался использовать JRI. Я столкнулся со следующим вопросом -

  1. у меня есть набор значений, полученных в моей программе Java, которые я сохранил в списке.
  2. у меня есть несколько таких списков - каждый из них представляет функцию.
  3. я хочу передать эти списки в скрипт R, чтобы создать простую регрессионную модель. Скрипт использует функцию lm ().

Я столкнулся с несколькими скриптами, которые читают из файла и загружают данные использование чтения.table () (или другие эквивалентные функции) перед вызовом ' lm()'. В этом конкретном случае я не хочу записывать в файл (создавать новый файл) и снова читать из этого файла в память - поскольку у меня уже есть данные в памяти.

Есть ли способ передать этот список из Java в R-скрипт напрямую, чтобы его можно было использовать как фрейм данных? Могу ли я передать этот список в качестве аргумента?

Я искал много, но не смог найти ничего похожего. Любой указатели было бы оцененный.

1 3

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)))