【问题标题】:Remove part of col names in list of data frames - R删除数据框列表中的部分列名称 - R
【发布时间】:2018-12-25 19:17:34
【问题描述】:

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

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

#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))

【问题讨论】:

标签: r regex list dataframe


【解决方案1】:

我们可以使用lapply循环遍历list,去掉sub的列名前缀,设置setNames的名称

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

或者使用tidyverse,循环使用list和map,并删除str_remove在rename_all内的列名的子字符串

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-04
    • 2017-09-15
    • 2018-03-07
    • 2021-01-07
    • 2020-07-11
    相关资源
    最近更新 更多