将名称应用于dataframe列变量

问题描述:

我有一个数据框,其中有563列,我想在其中使用长度为561的字符向量(Cnames)在前2列中更改列变量的名称。我尝试使用:将名称应用于dataframe列变量

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

但是这里没有任何反应。但如果我尝试改变所有列变量的名称如下,然后重命名作品:

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

谁能告诉我,为什么出现这种情况?提前致谢。

+0

我试过,但得到一个错误:错误在colnames(DF)[,3:563] user3922546 2014-08-27 09:37:57

+0

上的下标不正确的数目再次看代码,你有一个','太多。 – martin 2014-08-27 09:40:43

+0

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

你可以做

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

这将正常工作。

我不熟悉R内存模型,但我怀疑colnames(df[,3:563])的调用返回一个新的临时对象,它与原始数据帧无关。另一方面,colnames(df)将允许您直接更新数据框中的引用。

+1

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

+0

请参阅[这里](http://stackoverflow.com/questions/23427925/difference-between-namesdf1-and-namesdf1)为什么会发生这种情况 – 2014-08-27 09:44:38