循环更改多个数据框的列名

时间:2020-07-06 18:51:28

标签: r loops dataframe multiple-columns

我有三个数据框EC_Data,ED_Data和ST_data 它们都具有相同的列名,更具体地说,在第4列之后 从2006年到2015年将Year命名为Colums

因此,我创建了一个包含所有三个数据帧的新列表:

Alldata = list(EC_Data, ED_Data, ST_Data)

所以我试图重命名如下所示的for循环中的所有列...

for(x in seq_along(Alldata))
{
  for(j in seq_along(Alldata[[x]]))
  {
    if(j>4)
    {
      names(colnames(Alldata[[x]][j])) <- paste("X", substr(colnames(Alldata[[x]][j]), start = 1, stop = 5),sep="")
      print(colnames(Alldata[[x]][j]))
    }
  }
}

但是什么也没发生...

我不明白为什么,因为当我尝试调用每个列表的名称时,例如使用

view(colnames(Alldata[[2]])) 

名字似乎正是我想看到的

有人可以帮助我理解此循环不起作用的原因吗?我可以用什么代替它?

谢谢

1 个答案:

答案 0 :(得分:0)

如果我们想重命名所有列,请使用lapply遍历listpaste和现有列名的substr并为它们分配{{ 1}}

setNames

或使用Alldata <- lapply(Alldata, function(x) setNames(x, paste0("X", substr(colnames(x), 1, 5)))) 循环

for