r - 更改 R 中数据框列表中的列名称

标签 r dataframe

目标:更改以下列表中全局环境所有数据框的列名称

全局环境中的colnames

所以。

0) 列名称为:

 colnames = c("USAF","WBAN","YR--MODAHRMN") 

1) 我有以下数据帧:df1、df2。

2)我把它们放在一个列表中:

  dfList <- list(df1,df2)

3)循环列表:

 for (df in dfList){
   colnames(df)=colnames
 }

但这会创建一个带有我需要的列名称的新 df,它不会更改 df1、df2 中的原始列名称。为什么? lapply 可以作为解决方案吗?谢谢

可以这样:

 lapply(dfList, function(x) {colnames(dfList)=colnames})

工作?

最佳答案

使用 lapply,您可以按如下方式进行操作。

创建示例数据:

df1 <- data.frame(A = 1, B = 2, C = 3)
df2 <- data.frame(X = 1, Y = 2, Z = 3)
dfList <- list(df1,df2)
colnames <- c("USAF","WBAN","YR--MODAHRMN") 

然后,使用 setNames 覆盖列表,并将新列名称的向量作为 setNames 的第二个参数提供:

lapply(dfList, setNames, colnames)
#[[1]]
#  USAF WBAN YR--MODAHRMN
#1    1    2            3
#
#[[2]]
#  USAF WBAN YR--MODAHRMN
#1    1    2            3
<小时/>

编辑

如果你想将data.frames分配回全局环境,你可以这样修改代码:

dfList <- list(df1 = df1, df2 = df2)
list2env(lapply(dfList, setNames, colnames), .GlobalEnv)

关于r - 更改 R 中数据框列表中的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28648513/

相关文章:

R 在 data.table 中创建嵌套滚动列表

r - 类似于 excel vlookup

r - 用于在可重复研究中格式化数值的包

R:在水平图中显示按分组变量分层的值

python - 如何替换数据框列中大于特定值的值?

python - 将大型 Pandas Dataframes 分块写入 CSV 文件

python - 如何将日期从日-月-年重新格式化为年-月-日?

r - 从机器学习算法的角度看 h2o.ai 和 SparkMLlib 的区别

python - 拆分 Pandas DataFrame,其中一个因子列均匀分布在拆分中

r - 检查 R 数据框中的相同列