2014-08-27 165 views
1

我有一個數據框,其中有563列,我想在其中使用長度爲561的字符向量(Cnames)在前2列中更改列變量的名稱。我嘗試使用:將名稱應用於dataframe列變量

colnames(df[,3:563]) <- Cnames 

但是這裏沒有任何反應。但如果我嘗試改變所有列變量的名稱如下,然後重命名作品:

CoName <- c("char0", "char01", Cnames) 
colnames(df) <- CoName 

誰能告訴我,爲什麼出現這種情況?提前致謝。

+0

我試過,但得到一個錯誤:錯誤在colnames(DF)[,3:563] < - Cnames: 矩陣 – user3922546 2014-08-27 09:37:57

+0

上的下標不正確的數目再次看代碼,你有一個','太多。 – martin 2014-08-27 09:40:43

+0

或者只是'colnames(df)[ - seq_len(2)] < - Cnames' – 2014-08-27 09:43:03

回答

3

你可以做

colnames(df)[3:563] <- Cnames 

這將正常工作。

我不熟悉R內存模型,但我懷疑colnames(df[,3:563])的調用返回一個新的臨時對象,它與原始數據幀無關。另一方面,colnames(df)將允許您直接更新數據框中的引用。

+1

或使其一般'colnames(df)[3:ncol(df)] < - Cnames' – user1436187 2014-08-27 09:42:14

+0

請參閱[這裏](http://stackoverflow.com/questions/23427925/difference-between-namesdf1-and-namesdf1)爲什麼會發生這種情況 – 2014-08-27 09:44:38