我有一个像这样的data.frame
df = data.frame(
do_not_rename = 1:3,
rename1 = 1:3,
rename2 = 1:3)
并且假设我只想通过在前面添加“完成”来将以"rename"
开头的内容重命名为"finished_renamex"
。
我该怎么做?想象一下,如果我有成千上万个变量。
答案 0 :(得分:5)
使用dplyr::rename_at
和start_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))
答案 1 :(得分:4)
在基数R中,我们可以使用tr::nth-child(1n+4){
// your awesome styles
}
来标识以前缀开头的列名
startsWith
答案 2 :(得分:2)
一行即可完成,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是解决方法。