我正在使用 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)最佳答案
我相信asDouble()
和 asDoubleArray()
是您所需要的。
更新:所以在你的代码示例中,它应该是:
REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println(x.asVector().elementAt(0).asDouble());
PS。提到的问题实际上已经有了您需要的答案 - Java 数组中的 toString()
实现存在问题。
关于java - 使用 JRI 从 Java 调用 R,如何转换返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8029601/