-3

データセット (FULLDATASET) をトレーニング (OLDData) とホールドアウト (NewData) データセットに分割するループがあります。モデル ((xtreg)regressors を使用した auto.arima) は、i でインデックス付けされた 24 個のピース​​で推定されます。ホールドアウト データセット (NewData) は、OldData で構築されたモデルから FIT を使用して予測を行うために使用されます。NewData2 は NewData とまったく同じですが、列 18:20 の 3 つの予測子をゼロ値にする必要があります。ループを実行するとエラーは発生しませんが、列 18 から 20 の NewData2 の変数は元の値と同じであるため、NewData と NewData2 の両方を使用した予測は同じです。変数を名前で指定すると、最初に指定された変数のみにゼロのベクトルが割り当てられます。

OldData<-FULLDATASET[[i]][1:525,]
NewData<-FULLDATASET[[i]][526:547,]
NewData2<-transform(FULLDATASET[[i]][526:547,],FULLDATASET[[i]][526:547,18:20]<-0 )

私の質問は次のとおりです。データフレーム内の複数の列にゼロ値を割り当てることができるように、データフレームを変換するにはどうすればよいですか? また、コードがループで実行されていることを思い出してください。私はもともと plyr と apply 関数を使用していましたが、私のニーズに合わせて、ループの実行速度が大幅に向上しました。

4

1 に答える 1

1

<-1)引数関数内で使用しないでください。=代わりに使用してください。

2) の 2 番目の引数はtransform列名である必要があります。

3) 問題の最も簡単な解決策は、次の 2 つの手順です。

NewData2 = FULLDATASET[[i]][526:547,]
NewData2[,18:20] = 0
于 2013-09-24T18:23:12.463 に答える