-3

我有一个循环将数据集(FULLDATASET)拆分为训练(OLDData)和保留(NewData)数据集。一个模型(auto.arima with (xtreg)regressors)估计在由 i 索引的 24 个部分上。保留数据集 (NewData) 用于使用基于 OldData 构建的模型的 FIT 进行预测。NewData2 与 NewData 完全相同,只是我希望 18:20 列中的三个预测变量取零值。当我运行循环时,我没有收到任何错误,但是 NewData2 在第 18 到 20 列中的变量具有相同的原始值,因此我的预测在使用 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) 的第二个参数transform需要是列名。

3)解决您的问题的最简单方法是分两个步骤:

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