1
すべての変数はdata.frame 1-5の同じスケールにあります。私は1
にそれを変更したい5
と等しく、すべての値についてdata.frameR - forループを使用してデータフレームの値を条件付きで変更する
rpi_invert
A B C D
5 2 4 1
3 5 5 2
1 1 3 4
の
例。
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
}
これは、最初の行の値のみを変更し、2番目の列は変更しません。
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
が適用機能のある種のものでなくても、より効率的に行うことができると確信していますが、わかりません。
さらに詳しい情報が必要な場合は、私にお知らせください。
本当に賢いです。 – nrussell
@Cathそれはすごくうまくいった!あなたの方法ははるかに効率的です。可能ならば私のforループがなぜ私がしたかったことをしなかったのか理解していますか?そうでなければ、私はループについてもっと理解するためにさらなる研究をすることができると確信しています。 – Dre
@Dre、あなたの最初のforループでは、最初の2行で '5'と' 4'を '1'と' 2'に変更しますが、 '1'と' 2'を ' '5'と' 4'を最後の2行と組み合わせると動作しません。あなたの2番目のforループには、いくつかの問題があります。埋め込まれた 'ifelse'があまりにも多くありますが、' rpi_invert [[b]]カラムの代わりに完全なdfを各 "loop turn" ' – Cath