目标:从以下列表中更改所有数据框 in the Global Environment 的列名
全球环境中的人名
所以 .
0)列名是:
colnames = c("USAF","WBAN","YR--MODAHRMN")
1)我有以下data.frames:df1,df2 .
2)我把它们放在一个清单中:
dfList <- list(df1,df2)
3)循环列表:
for (df in dfList){
colnames(df)=colnames
}
但是这会创建一个带有我需要的列名的新df,它不会更改df1,df2中的原始列名 . 为什么?可以提供解决方案吗?谢谢
可以像:
lapply(dfList, function(x) {colnames(dfList)=colnames})
工作?
3 回答
有了lapply,你可以这样做 .
创建样本数据:
然后,使用
setNames
覆盖列表并将新列名称的向量作为第二个参数提供给setNames
:编辑
如果要将data.frames分配回全局环境,可以像这样修改代码:
只需将for循环更改为-循环索引,如下所示:
数据
解
产量
通过使用
for (df in dfList)
,您实际上每次都创建一个新的df并将列名更改为保持原始列表(dfList
)不变的列名 .如果希望
for
循环起作用,则不应将整个data.frame作为参数传递 .