簡體   English   中英

使用JRI從Java調用R,如何轉換返回值

[英]Call R from Java using JRI, how to cast return value

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

elementAt()無法正常工作,您可以使用at()。

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

我相信asDouble()asDoubleArray()是您所需要的。

更新:因此在您的代碼示例中,它應該是:

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

PS。 所提到的問題實際上提供了您需要的答案-Java數組中toString()實現存在問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM