如何将零值分配给循环中r中data.frame中的多个列

时间:2013-09-24 18:16:15

标签: r for-loop dataframe

我有一个循环将数据集(FULLDATASET)拆分为训练(OLDData)和holdout(NewData)数据集。模型(具有(xtreg)回归量的auto.arima)估计由i索引的24个碎片。保持数据集(NewData)用于使用构建在OldData上的模型中的FIT进行预测。 NewData2与NewData完全相同,只是我希望列18:20中的三个预测变量采用零值。当我运行循环时,我没有得到任何错误,但是列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并应用函数但是为了我的需要,我的循环执行得更快。

1 个答案:

答案 0 :(得分:1)

1)不要在参数函数中使用<-。请改用=

2)transform的第二个参数需要是列名。

3)解决问题的最简单方法分为两步:

NewData2 = FULLDATASET[[i]][526:547,]
NewData2[,18:20] = 0