使用 JRI 从 Java 调用 R,如何转换返回值
我正在使用 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.没有答案的相关问题: 将 REXP 对象转换为双精度数组 (Java/R)
I'm executing some R commands from Java using JRI.I want to use the results from R in my Java for further calculations but I have no idea how cast the returned object.
call code in Java:
REXP x;
System.out.println(x = rengine.eval("source(\"/..../TS.R\")"));
System.out.println( x.asVector().elementAt(0));
last line from R code:
eq_all[length(eq_all)-1]
--
output in Java console:
[VECTOR ([REAL* (3.050462038715372)], [BOOLi* ])]
[REAL* (3.050462038715372)]
"3.050462038715372" is the right value but how can I access it in Java?
best regards,
Immanuel
PS. related question without answer:
Converting REXP object to a double array (Java/R)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我相信
asDouble()< /code>
和
asDoubleArray()
就是您所需要的。更新:所以在你的代码示例中,它应该是:
PS。提到的问题实际上已经有了您需要的答案——Java 数组中的
toString()
实现存在问题。I believe
asDouble()
andasDoubleArray()
are what you need.Update: So on your code example, it should be:
PS. The referred question actually had the answer you needed—the problem there is with implementation of
toString()
in Java arrays.elementAt() 不起作用,您可以使用 at()。
elementAt() is not working, your could use at().