2016-06-24 5 views
1

でJAVAプログラムをデバッグすることは:は、実行中の間に結果が異なり、コードは以下の通りです組込みRコード

 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]); 
     } 

は実際に私がRserve()接続を使用してJAVA内部Rを実行している、今、すべてのものが正常に動作しますが、プログラムを実行すると、出力は完全に間違っており、出力のデバッグは完璧です。私は自分のコードでバグを見つけることができませんコードを確認し、あなたの提案を残してください。あなたに私は以下の画像は助けることを願っています

ありがとう:

1)画像は、デバッグモードで出力が

This Image depicts output in DEBUG mode 2)画像は、通常のRUNモードでの出力を示して描い

This Image depicts the output in normal RUN mode

答えて

2

これの背後にある理由は、JavaとRのストレージタイプの根本的な違いです。次のリンクから読むことができます:Documentation for asNativeObject()この関数は、Rの戻り型をJava Objectクラスに変換しようとします。しかし、この手順は毎回成功しません。したがって、asNativeObject()関数を使用しないことをお勧めします。他の機能を使用して回避策を見つけてください。

異なる点は、デバッグモードと実行モードで作成されたJavaオブジェクトの内容と構造が異なるためです。

+0

ありがとう@ブリジッシュクマーSahoo – balu

+0

あなたが答えが好きなら、アップしてください。ありがとう。 – brijs

関連する問題