gpt4 book ai didi

java - Renjin - 如何使用java生成的值

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:53 24 4
gpt4 key购买 nike

我正在使用 renjin,我正在尝试使用我在 java 代码中生成的值和 r 代码,例如:

int x = 7;

try
{
engine.eval("tmp<-c(x, 4)");
engine.eval("print(tmp)");
}
catch (ScriptException ex)
{
;
}

但是,这不起作用,因为引擎显然不能与 x 一起工作。有解决这个问题的简单方法吗?

最佳答案

Renjin 使用 javax.script 接口(interface),为您提供与 R 环境交互的强大功能。请参阅此处的文档: http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/

要在 R 的全局环境中设置变量,可以使用 put() 方法。以下是一些示例:

engine.put("x", 4);
engine.put("y", new double[] { 1d, 2d, 3d, 4d });
engine.put("z", new org.renjin.sexp.DoubleArrayVector(1,2,3,4,5));
engine.put("obj", new HashMap());

Renjin 会将基元、基元数组和 java.lang.String 实例隐式转换为 R 对象。 Java 对象将被包装为 R external 对象。

在 R 代码中,Renjin 允许您使用 $ 运算符操作 Java 对象,例如:

obj$put("a", 1)
obj$put("b", 2)

print(obj$size())
print(obj$get("b"))

您还可以通过扩展 org.renjin.sexp 包中的类来提供自己的 R 对象实现。例如:

public class MyDoubleVector extends DoubleVector {

public double getElementAsDouble(int index) {
// lookup value in database
return index;
}

public int length() {
// query length in database
return length;
}
}

关于java - Renjin - 如何使用java生成的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247478/

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