2015-01-02 27 views
1

有20列的數據框training。第一列被稱爲「目標」。我想更改列名稱2:20,如下所示X1,X2,X3,...如何重新命名從第二個列開始的列?

如果我運行此命令,則所有列都將被重命名,包括第一個(目標)。

names(training) <- paste("X", 1:ncol(training), sep=""); 

如何重命名列從第二個開始?

+0

那麼,當然,如果你全部選中它們,它們全部都會被重新命名。爲什麼不用''''提取選擇你感興趣的那些? – A5C1D2H2I1M1N2O1R2T1

+0

也許'名稱(訓練)[ - 1] < - paste0('X',1:(ncol(訓練)-1))' – akrun

+0

@ Ananda Mahto:我試過訓練[, - 1]。但是,正如我看到的正確方法是使用(培訓)-1 –

回答

3
colnames(training)[2:20]<-paste("X", 1:19, sep="") 
+0

以上是非常好的。注意,'colnames'等價於'names','paste0'比'paste'更有效率。因此,您可以將代碼略微修剪爲名稱(訓練)[2:20] < - paste0(「X」,1:19)'。 – KFB

+1

@KFB,'colnames'不等於'names' - 剛好碰到'data.frame'的情況。 – A5C1D2H2I1M1N2O1R2T1

+0

@KFB,你能否詳細說明爲什麼'paste0'比'paste'更有效率?我懷疑。 – flodel