gpt4 book ai didi

java - 将内存中的数据传递给 R 脚本以创建模型

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:51 24 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

关于java - 将内存中的数据传递给 R 脚本以创建模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20736403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com