これは、この質問に関連しています。
大きなデータ フレーム内の列のサブセットの名前を変更したいと考えています。次のコードは、列X4
、X5
、X6
およびX7
をそれぞれ gradek
、grade1
、grade2
、および に名前変更することを期待しています。grade3
set.seed(1)
in.df <- data.frame( matrix( rnorm(60), ncol=10) )
names(in.df) <- ifelse( names(in.df) %in% c('X4', 'X5', 'X6', 'X7'),
paste('grade', c('k',1:3), sep=''),
names(in.df) )
でも、
> names(in.df)
[1] "X1" "X2" "X3" "grade3" "gradek" "grade1" "grade2" "X8"
[9] "X9" "X10"
それでも
> paste('grade', c('k',1:3), sep='')
[1] "gradek" "grade1" "grade2" "grade3"
順序が保持されていないことを示しています。This threadmatch
は、代わりに使用すると機能することを示唆してい%in%
ますが、この場合は機能しません。(おそらく、R の他のバージョンではそうでした。私のインストール済みバージョン (2.15.3) では、ヘルプ ページで、それが via で定義されてmatch
いることが示唆されているため、切り替えても役に立たないでしょう。)%in%
match
どんな助けでも大歓迎です!
受け入れられた回答 この回答は、名前の変更の問題を解決します。 この回答は、奇妙な動作がリサイクルによるものであることを説明しています。