【发布时间】:2016-08-18 17:54:50
【问题描述】:
data.frame 1-5 中的所有变量都在相同的范围内。
data.frame 示例
rpi_invert
A B C D
5 2 4 1
3 5 5 2
1 1 3 4
对于所有等于 5 的值,我想将其更改为 1。
对于4 更改为2。
对于2 更改为4。
对于1 更改为5。
值更改后的 data.frame 示例。
rpi_invert
A B C D
1 4 2 5
3 1 1 4
5 5 3 2
我已经厌倦了。
for(b in colnames(rpi_invert)){
rpi_invert[[b]][rpi_invert[[b]] == 5] <- 1
rpi_invert[[b]][rpi_invert[[b]] == 4] <- 2
rpi_invert[[b]][rpi_invert[[b]] == 2] <- 4
rpi_invert[[b]][rpi_invert[[b]] == 1] <- 5
}
这只会改变第一行的值,不会改变第二列的值。
for(b in colnames(rpi_invert)){
rpi_invert <- ifelse(rpi_invert[[b]] == 5,1,
ifelse(rpi_invert[[b]] == 4,2,
ifelse(rpi_invert[[b]] == 2,4,
ifelse(rpi_invert[[b]] == 1,5,rpi_invert[[b]]))))
}
但这给了我错误:
Error in rpi_invert[[b]] : subscript out of bounds
如果我尝试对单个列使用相同的方法,而不是循环遍历 data.frame,那么这两种方法都有效,所以我不确定是什么问题。
我确信如果没有 for loop 可能会使用某种类型的应用功能,我可以更有效地完成我想要做的事情,但我不确定如何。
如果需要更多信息,我们将不胜感激。
【问题讨论】: