对于Loop,在R中没有给出正确的结果

时间:2016-10-14 13:35:29

标签: r

我正在尝试将我的Dataframe列从第5列重命名为我的数据框中的总列数。下面是我编码重命名的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”。运行上面的代码后,名称没有改变。

有人能告诉我我的代码出了什么问题。

谢谢,

莫汉

1 个答案:

答案 0 :(得分:2)

你想要更改第i个colname,这就是为什么括号需要在后面的括号之后站立,如

colnames(raw_data_ui)[i]

为了给出更清晰的观点,一些更简单的例子:

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

您的

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

将创建一个新的实例/实体,这是d的第二行。更改任何内容后,将创建副本,例如名称,并且d的链接将丢失。

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

将更改第二个名称,对d的引用完整无缺。