我有三个数据框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]]))
名字似乎正是我想看到的
有人可以帮助我理解此循环不起作用的原因吗?我可以用什么代替它?
谢谢
答案 0 :(得分:0)
如果我们想重命名所有列,请使用lapply
遍历list
,paste
和现有列名的substr
并为它们分配{{ 1}}
setNames
或使用Alldata <- lapply(Alldata, function(x)
setNames(x, paste0("X", substr(colnames(x), 1, 5))))
循环
for