删除数据框列表中的部分列名称 - R

标签 r regex list dataframe

在这个数据框的虚拟列表中,所有列名称都有一个前缀,后跟一个下划线。列表中的每个数据框都有不同的前缀,但它们都包含下划线。

如何删除列表中所有数据框的列名称中的下划线及其前面的文本?我可以单独完成,但我的真实列表包含更多数据框。谢谢

#add diferent prefixes to all col names
colnames(iris)<-paste('iris_',colnames(iris), sep='')

colnames(mtcars)<-paste('mt_',colnames(mtcars), sep='')

colnames(ToothGrowth)<-paste('TG_',colnames(ToothGrowth), sep='')

#create list of data frames

mylist<-list(iris, mtcars, ToothGrowth)

#name elements of list

names(mylist)<-c('iris','mtcars','ToothGrowth')

#remove prefix from colnames individually for each data frame

colnames(mylist['iris']$iris)<-sub('[^.]+\\_', '', colnames(mylist['iris']$iris))

最佳答案

我们可以使用lapply循环遍历 list ,删除列名的前缀 sub ,并将名称设置为 setNames

lapply(mylist, function(x) setNames(x, sub("^[^_]*_", "", names(x))))

或者使用tidyverse ,循环遍历listmap并使用 str_remove 删除列名称的子字符串里面rename_all

library(tidyverse)
map(mylist, ~  .x %>% 
                  rename_all(~ str_remove(.x, "^[^_]*_")))

关于删除数据框列表中的部分列名称 - R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51392362/

相关文章:

r - grepl期间为“。”在R?

rjags 安装错误,在 Windows 上找不到 JAGS 路径

r - 我可以使用子 .Rmd 中的 YAML 数据作为 pagedown 文档的一级标题吗?

c# - 在 C# 中选择以 "NVH"而不是 "NVHE"开头的文件名

regex - 如何使用 Perl 忽略多行字符串中的最后一个换行符

MySQL 遍历表行,运行另一个查询,连接结果

java - 无法实例化类型 List<Product>

r - 在 R 数据框中按组应用计算

python - 对于变量 URL 的循环列表 Python

java - 查找恰好(或至少)有一个换行符的 n 个字符