如何使用 RCaller 将预测数据从 R 返回到 Java?

时间:2021-06-11 12:43:39

标签: java r rcaller

       RCaller caller = new RCaller();
       caller.setRscriptExecutable("/usr/local/bin/Rscript");
       caller.cleanRCode();
       caller.addRCode("volume_ts <- ts(data$volume,start = c(2017,11),frequency = 12)");
       caller.addRCode("volume <-subset(volume_ts,end=26)");
       caller.addRCode("real <- subset(volume_ts, start = 27)");
       caller.addRCode("arima <- auto.arima(volume)");
       caller.addRCode("estimate <- forecast(arima,h=15)");
       caller.addRCode("ds <- data.frame(estimate)");
       caller.addRCode("di <- dim(ds)");

       caller.runAndReturnResult("di");

     
       int[] dim = caller.getParser().getAsIntArray("di");
       
       caller.runAndReturnResult("ds");
       double[][] f = caller.getParser().getAsDoubleMatrix("ds", dim[1], dim[2]);
       

以上是我使用 RCaller 将预测数据从 R 获取到 Java 的 Java 代码。但它不能正常工作。低于异常。

      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

这个异常是由于这一行 "double[][] f = caller.getParser().getAsDoubleMatrix("ds", dim[1], dim[2]);"

所以,我随机给出了尺寸并检查它是否返回输出

      double[][] f = caller.getParser().getAsDoubleMatrix("ds", 30, 30);

然后我得到以下错误。

        Exception in thread "main" rcaller.exception.RCallerParseException: Variable ds not found
        at rcaller.ROutputParser.getAsStringArray(ROutputParser.java:125)
        at rcaller.ROutputParser.getAsDoubleArray(ROutputParser.java:142)
        at rcaller.ROutputParser.getAsDoubleMatrix(ROutputParser.java:208)

请任何人帮我解决这个问题。谢谢:)

0 个答案:

没有答案
相关问题