如何通过添加前缀仅重命名 data.frame 中的某些列名称?



我有一个这样的数据帧

df = data.frame(
do_not_rename = 1:3,
rename1 = 1:3,
rename2 = 1:3)

假设我只想通过在前面添加"已完成"来重命名那些以"rename"开头的"finished_renamex"

我该怎么做?想象一下,如果我有数千个变量。

使用dplyr::rename_atstart_with助手

library(dplyr)
df %>% rename_at(vars(starts_with('rename')), ~paste0('finished_',.))
do_not_rename finished_rename1 finished_rename2
1             1                1                1
2             2                2                2
3             3                3                3

使用基本 R

colnames(df)[grep('^rename',names(df))] <- paste0('finished_',grep('^rename',names(df), value = TRUE))

在基本 R 中,我们可以使用startsWith来识别以前缀开头的列名

inds <- startsWith(names(df), "rename")
#Or grep
#inds <- grep("^rename", names(df))
names(df)[inds] <- paste0("finished_", names(df)[inds])
df
#  do_not_rename finished_rename1 finished_rename2
#1             1                1                1
#2             2                2                2
#3             3                3                3

在一行中,您可以使用gsub

names(df) <- gsub('^rename(.)','finished_rename\1', names(df))
names(df)
[1] "do_not_rename"    "finished_rename1" "finished_rename2"

如果您有超过 9 个像这样编号的列,则应在.后使用+字符

names(df) <- gsub('^rename(.+)','finished_rename\1', names(df))

一般来说,gsub 是要走的路。

最新更新