我正在使用JRI从Java执行一些R命令。我想在我的Java中使用R的结果进行进一步的计算,但我不知道如何转换返回的对象。
REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println( x.asVector().elementAt(0));
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)
答案 0 :(得分:0)
我相信您需要asDouble()
和asDoubleArray()
。
更新:在您的代码示例中,它应该是:
REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println(x.asVector().elementAt(0).asDouble());
PS。提到的问题实际上有你需要的答案 - 在Java数组中实现toString()
的问题。
答案 1 :(得分:0)
elementAt()不起作用,你可以使用at()。
REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println(x.asVector().at(0).asDouble());