【问题标题】:How to assign zero values to multiple columns in a data.frame in r within a loop如何在循环中为 r 中的 data.frame 中的多个列分配零值
【发布时间】:2013-09-30 02:36:28
【问题描述】:

我有一个循环,将数据集 (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 函数,但根据我的需要,我的循环执行得更快。

【问题讨论】:

  • 不要使用transform。只需FULLDATASET[[i]][526:547,18:20] &lt;- 0 就足够了。

标签: r for-loop dataframe


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-29
    • 2021-08-02
    • 2020-05-27
    • 2020-12-12
    • 1970-01-01
    • 2017-02-13
    • 2020-12-02
    • 1970-01-01
    相关资源
    最近更新 更多