1

我正在使用 JRI 从 Java 执行一些 R 命令。我想在我的 Java 中使用 R 的结果进行进一步计算,但我不知道如何转换返回的对象。

Java调用代码:

REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println( x.asVector().elementAt(0));

R代码的最后一行:

eq_all[length(eq_all)-1]

--

Java控制台中的输出:

[VECTOR ([REAL* (3.050462038715372)], [BOOLi* ])]
[REAL* (3.050462038715372)]

“3.050462038715372”是正确的值,但如何在 Java 中访问它?

最好的问候,伊曼纽尔

PS。没有答案的相关问题: Converting REXP object to a double array (Java/R)

4

2 回答 2

0

elementAt() 不起作用,您可以使用 at()。

REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println(x.asVector().at(0).asDouble());
于 2014-07-29T07:19:59.530 回答
0

我相信asDouble()并且asDoubleArray()是你需要的。

更新:所以在你的代码示例中,它应该是:

REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println(x.asVector().elementAt(0).asDouble());

PS。提到的问题实际上有您需要的答案toString()——Java 数组中的实现存在的问题。

于 2011-11-06T19:14:14.500 回答