如何根据另一列表为列表中各dataframe设置列名?
给列表中对应数据框分配列名的解决方案
你可以通过对应位置匹配赋值的方式完成这个需求,以下提供两种常用实现方法:
方法一:基础R循环
利用循环遍历列表的每个索引,将list2中对应位置的列名向量赋值给list1里的数据框:
# 遍历list1的每个元素位置 for (i in seq_along(list1)) { # 为对应位置的dataframe设置列名 colnames(list1[[i]]) <- list2[[i]] }
执行后查看list1,就能看到列名已更新:
list1 [[1]] Names Age 1 Jon 23 2 Bill 41 3 Maria 32 [[2]] Names Age Height 1 Sally 25 56 2 Tom 32 55
方法二:使用tidyverse的purrr包
如果习惯tidyverse风格,可以用purrr::map2函数,它专门处理两个长度相同的列表的对应元素操作:
library(purrr) # 简洁写法,直接修改列名并返回更新后的dataframe列表 list1 <- map2(list1, list2, ~`colnames<-`(.x, .y))
或者更易读的展开写法:
list1 <- map2(list1, list2, function(df, new_names) { colnames(df) <- new_names df })
内容的提问来源于stack exchange,提问作者ZT_Geo
相关产品推荐
相关产品推荐

