0

我有一个 R 脚本,它从数据库中检索数据,对其执行一些操作,并为我提供我想使用 JRI 在 Java 中检索的数据

beforeQuery <- c(1)
query <- {{Query}}
....
queryResult <- fetch(queryResultSet,1)

得到结果的 Java 代码:

re.eval("source('" + location + "')"); //location of the R script
System.out.println(re.eval("beforeQuery").asString()); //works
System.out.println(re.eval("queryResult$column").asString()); //returns null

我已经通过独立运行 R 程序验证了 queryResult 没问题。

我该怎么做才能确保我可以成功地在 java 程序中得到结果?

4

1 回答 1

0

您需要将 re.eval() 方法传递给 REXP 变量,然后使用 .asString() 将其传递给 Java 字符串,如下所示:

REXP test =  re.eval("head(queryResult$column,100)");
   String [] output = test.asString();
 for (i = 0; i < test.length  ; i++) {System.out.println(output[i]);}

请注意,如JRI 和 ARIMA 集成中所述,可以从 R 传递到 Java 的数据量是有限制的,这就是我添加“head”的原因,以检查它是否有效。如果是这样,那么只需将其删除。

于 2014-03-24T10:28:38.973 回答