1. ホーム
  2. r

[解決済み] 複数の列の名前によるリネーム

2022-03-06 19:14:45

質問

すでに誰かが質問しているはずなのですが、回答が見つかりませんでした。私が答えました。

x = data.frame(q=1,w=2,e=3, ...and many many columns...)  

カラムの任意のサブセット(その位置は必ずしも知らない)を他の任意の名前にリネームする最もエレガントな方法は何でしょうか?

例)次のように名前を変更します。 "q""e""A""B" これを行うための最もエレガントなコードは何でしょうか?

明らかに、ループができますね。

oldnames = c("q","e")
newnames = c("A","B")
for(i in 1:2) names(x)[names(x) == oldnames[i]] = newnames[i]

でも、もっといい方法があるのでは?パッケージのいくつかを使うとか?( plyr::rename など)

解決方法は?

setnames から data.table パッケージで動作します。 data.frame または data.table s

library(data.table)
d <- data.frame(a=1:2,b=2:3,d=4:5)
setnames(d, old = c('a','d'), new = c('anew','dnew'))
d


 #   anew b dnew
 # 1    1 2    4
 # 2    2 3    5

変更は参照によって行われるので、コピーしないことに注意してください(data.frame も同様です!)。