所有变量在data.frame 1-5中都处于相同的比例.
data.frame的示例
rpi_invert
A B C D
5 2 4 1
3 5 5 2
1 1 3 4
Run Code Online (Sandbox Code Playgroud)
对于所有相等的值,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
Run Code Online (Sandbox Code Playgroud)
我累了.
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
}
Run Code Online (Sandbox Code Playgroud)
这只会更改第一行而不是第二列中的值.
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]]))))
}
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
Error in rpi_invert[[b]] : subscript out of bounds
Run Code Online (Sandbox Code Playgroud)
如果我为单个列尝试相同的方法而不是循环遍历data.frame,那么这两种方法都有效,所以我不确定是什么问题.
我确信我想要做的事情可以更有效率地完成而不需要for loop某种类型的应用功能,但我不确定如何.
如有任何帮助,请告知我们是否需要进一步的信息.
您可以尝试(如果您的data.frame是df):
3-(df-3)
# A B C D
#1 1 4 2 5
#2 3 1 1 4
#3 5 5 3 2
Run Code Online (Sandbox Code Playgroud)
或者,相同但写得有点不同: 6-df
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |