gpt4 book ai didi

java - 如何通过 RServe 将浮点/ double 组作为 vector 从 JAVA 发送到 R

转载 作者:行者123 更新时间:2023-12-02 03:31:12 24 4
gpt4 key购买 nike

我通过RserveRJava结合使用,我想在 R 中使用 预测 w.r.t ARIMA,但用于预测的值/数据存在于 postgres 数据库中。我也知道我可以直接在R中使用RPostgreSQL从数据库获取数据,但是在发送到R之前我想在JAVA中处理数据库数据稍后我想传输到R,所以对于我可以从 postgres DB 获取数据,并立即处理为原始 float/double 数组类型,并尝试通过 'Rserve' 发送到 R strong> 并且它抛出语法错误异常。我对这个 R 完全陌生,我发现做这个很困难。请任何人查看该问题并评论您的建议。

为了更好地理解,请查看以下代码片段:

List<Float> xfval = new ArrayList<Float>();
Statement data_statement = dbComp.createStatement();
String command = "SELECT * FROM to_forecast";
ResultSet res=data_statement.executeQuery(command);
while(res.next())
{
xfval.add(res.getFloat("values"));
}
/*
*
Here I have process data of 'xfval'
w.r.t to condition but I'm not disclosing any
logic w.r.t to processing
*
*
*/

RConnection connection = new RConnection();
String load_pkgs = "require(Rserve); require(forecast)";
connection.eval(load_pkgs);
float[] floatArray = ArrayUtils.toPrimitive(xfval.toArray(new Float[0]), 0.0F);

//below line is that where I'm getting the syntax error exception
connection.eval("xData=("+floatArray+")").asDouble();
String strx2 = "x = xData[1:100,1];";
connection.eval(strx2);
/*the code continues*/

我还想建议直接在JAVA中使用ARIMA预测技术,而不使用R。我选择 R 的原因是 R 可以执行 ARIMA 和预测技术。如果有任何开源 API 或 JAVA 库,请尽快告诉我。

有关异常详细信息,我附上下面的图片:

Exception for Syntax Err

谢谢

最佳答案

正如您在 RConnection 文档中看到的,eval 函数采用 String 作为其参数。因此,您需要创建一个适合 R 格式的字符串。

这可能有效:

    String rVectorStr="";
for(int i=0;i<floatArray.length;i++) {
if(i==floatArray.length-1)
rVectorStr=rVectorStr.concat(String.valueOf(floatArray[i]));
else
rVectorStr=rVectorStr.concat(String.valueOf(floatArray[i])+",");
}
//System.out.println(rVectorStr);
connection.eval("xData=c("+rVectorStr+")");
String strx2 = "x = xData[1:100,1];";

as.Double() 用于接收输出(由 R 在评估 eval() 内发送的字符串后生成),并将它们存储为 Java Double 类型。它不是将 Double 数组发送到 R 的东西。Rserve 中没有这样的方法。

关于java - 如何通过 RServe 将浮点/ double 组作为 vector 从 JAVA 发送到 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38066920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com