3

我是 R 新手,一直在尝试使用 JRI。我面临以下问题 -

  1. 我在我的 Java 程序中收到了一组值,这些值存储在一个列表中。
  2. 我有多个这样的列表——每一个都代表一个特征。
  3. 我想将这些列表传递给 R 脚本以创建一个简单的回归模型。该脚本使用 lm() 函数。

在调用“lm()”之前,我遇到了多个从文件读取并使用 read.table()(或其他等效函数)加载数据的脚本。在这种特殊情况下,我不想写入文件(创建一个新文件)并再次从该文件读取到内存中 - 因为我已经在内存中有数据。

有没有办法让我将此列表从 Java 直接传递到 R 脚本,以便它可以像数据框一样使用?我可以将此列表作为参数传递吗?

我搜索了很多,但找不到类似的东西。任何指针将不胜感激。

4

1 回答 1

3

非常容易使用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 代码端

使用rjavapackage ,我创建了一个 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)))
于 2013-12-23T04:11:14.727 回答