循环更改许多数据框的列名
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
循环遍历 list
、paste
和现有列名称的 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))
}
我有三个数据框 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
循环遍历 list
、paste
和现有列名称的 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))
}