Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用嵌入式R代码运行和调试JAVA程序的结果不同_Java_R_Rserve - Fatal编程技术网

使用嵌入式R代码运行和调试JAVA程序的结果不同

使用嵌入式R代码运行和调试JAVA程序的结果不同,java,r,rserve,Java,R,Rserve,代码如下: RConnection connection = new RConnection(); String load_pkgs = "require(Rserve); require(forecast)"; connection.eval(load_pkgs); String strx1 = "xData = read.table(\"D:\\\\R_TESTS\\\\ts_interval_data21.csv\",sep=\"

代码如下:

      RConnection connection = new RConnection();
        String load_pkgs = "require(Rserve); require(forecast)";
        connection.eval(load_pkgs);
        String strx1 = "xData = read.table(\"D:\\\\R_TESTS\\\\ts_interval_data21.csv\",sep=\"|\",header=FALSE,col.names=c(\"a\",\"b\",\"c\",\"d\",\"xData\",\"f\"))[,\"xData\",drop=FALSE]";
        connection.eval(strx1);
        String strx2 = "x = xData[1:100,1]; fit = auto.arima(x);";
        connection.eval(strx2);
        String strx3 = "result = forecast(fit,h=12);";
        connection.eval(strx3);
        Object result =       (Object)connection.eval("result").asNativeJavaObject();
        HashMap map  = (HashMap)result;
        List<Object> objects  = new ArrayList<Object>(map.keySet());
        double values[] = (double[])objects.get(4);
                  for(int i=0;i<values.length;i++)
        {
            System.out.println((i+1)+":"+values[i]);
        }
RConnection connection=new RConnection();
String load_pkgs=“require(Rserve);require(forecast)”;
连接.评估(荷载/包装);
String strx1=“xData=read.table(\'D:\\\R\\\u TESTS\\\\ts\\\\u interval\u data21.csv\”,sep=\“\”,header=FALSE,col.names=c(\'a\,\'b\,\'c\,\'D\,\'xData\,'f\”)[,“xData\”,drop=FALSE];
连接.eval(strx1);
String strx2=“x=xData[1:100,1];fit=auto.arima(x);”;
连接.eval(strx2);
String strx3=“结果=预测(拟合,h=12);”;
连接。评估(strx3);
Object result=(Object)connection.eval(“result”).asNativeJavaObject();
HashMap=(HashMap)结果;
List objects=newarraylist(map.keySet());
双值[]=(双[])对象。获取(4);

对于(int i=0;i这背后的原因是Java和R存储类型的根本区别。正如您在以下链接中所读到的:此函数“尝试”将R返回类型转换为Java对象类。但此过程并非每次都成功。因此,我建议您不要使用asNativeObject()函数。尝试使用其他函数找到解决方法


您之所以看到这种差异,是因为在调试和运行模式下创建的Java对象在内容和结构上有所不同。

谢谢@Brijesh Kumar Sahoo