使用JRI从Java调用R,如何转换返回值

时间:2011-11-06 19:07:26

标签: java r jri rjava

我正在使用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)

2 个答案:

答案 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());