【发布时间】:2019-05-16 18:38:01
【问题描述】:
这个问题的变体已经得到解答,但作为一个相对缺乏 R/编程经验的人,我正在努力将它们应用到我的数据集。我有几个数据框,我正在尝试使用 for 循环来创建一个添加到每个数据框的新变量。
每个数据帧都有完全相同的列名,但数据帧代表不同的时间点(例如,w1 是 wave 1,w2 是 wave 2,等等)。
我完成了一个 for 循环,以 1) 对几个项目进行反向评分,然后 2) 计算一个新变量,该变量只是几个变量的总和。
w1
cesd1 cesd2
0 0
1 1
2 1
w2
cesd1 cesd2
3 0
1 2
2 1
waves = list(w1, w2)
for(i in 1:length(waves)) {
waves[[i]]$cesd2R <- abs(waves[[i]]$cesd2 - 3)
waves[[i]]$cesdTot <- with(waves[[i]], cesd1+ cesd2R, na.rm = T)
}
我想获得一个输出,其中包括每个数据帧中的所有先前列以及我在每个数据帧的循环中计算的新列(“cesd2R”和“cesdTot”)。
w1
cesd1 cesd2 cesd2R cesdTot
0 0 3 3
1 1 2 3
w2
cesd1 cesd2 cesd2R cesdTot
3 0 3 6
1 2 1 2
当我运行循环时,我没有收到任何错误,但似乎什么也没发生。我错过了什么?非常感谢!
【问题讨论】:
-
当我运行你的代码时,
waves中的 data.frames 似乎是你想要的结果,所以我似乎无法复制你的问题。您是否可能忽略了将waves列表中的结果重新分配给w1和w2? -
是的,这是我遗漏的最后一步——我没有将 wave 分配回 w1 和 w2,所以我通过以下方式解决了它:w1 = waves[[1]]。谢谢!