2016-10-14 8 views
1

私のデータフレームの列を5列目からデータフレーム内の列の総数に変更しようとしています。以下は、名前を変更するようにコーディングしたRループです。Forループで正しい結果が得られないR

for(i in 5:NCOL(raw_data_ui)){ 
    colnames(raw_data_ui[i]) <- paste(substr(colnames(raw_data_ui[i]),7,9), substr(colnames(raw_data_ui[i]),11,14), sep = "-") 
} 

しかし、私のコードは、列名を変更しませんでした。たとえば、私の5番目の列名は "Count.Feb.2015"です。上記のコードを実行した後、名前は変更されませんでした。

私のコードで何が問題になったか教えてもらえますか?ブラケットは与えるために

colnames(raw_data_ui)[i] 

のように閉じ括弧の後の後に立ってする必要がある理由

おかげで、あなたはi番目COLNAMEを変更したい

モハン

+2

'colnames(raw_data_ui [i])'の代わりに 'colnames(raw_data_ui)[i]'を試してください。それでも問題が解決しない場合は、再現可能な例を投稿してください。 – Bernhard

+0

@Bernhard Bernhardありがとう...それは働いた... –

答えて

2

、すなわち

d <- data.frame(a=1, b=2, c=3) 

ご使用のバージョンの

colnames(d[2])<-"Y" 

はDの第2行の新しいインスタンス/エンティティを作成します。名前のように何かを変更するとコピーが作成され、dへのリンクが失われます。

colnames(d)[2]<-"Y" 

は、第2の名前を変更し、dへの参照はそのままです。

関連する問題