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

Changing column names of many dataframes in a loop

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

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

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]])) 

名字好像是我想看的

谁能帮我理解这个循环不起作用的原因,我可以用什么代替这个?

谢谢

如果我们要重命名所有列,请使用 lapply 循环遍历 listpaste 和现有列名称的 substr 并将它们分配给setNames

Alldata <- lapply(Alldata, function(x) 
      setNames(x, paste0("X", substr(colnames(x), 1, 5))))

或使用 for 循环

for(i in seq_along(Alldata)) {
      Alldata[[i]] <- setNames(Alldata[[i]], 
           paste0("X", substr(colnames(Alldata[[i]]), 1, 5))
  }