0

我有一个我不想更改的列名列表 colsNotRename。我想要添加前缀的所有其他列。在 BaseR 中执行此操作的一种方法是:

xx <- data.frame(A = 1:3, B = 3:5, Unknown = c("A","B","C"))
colsNotRename <- c("A","B")
cols <- !colnames(xx) %in% colsNotRename
colnames(xx)[cols] <- paste0("unknown.", colnames(xx)[cols])

或者 :

xx <- setNames(xx, c(colnames(xx)[!cols] , paste0("unknown.", colnames(xx)[cols])))

我正在寻找使用 dplyr::rename_ 解决此问题的方法

4

2 回答 2

0

rename_if 的另一个解决方案

library(dplyr)
xx %>% dplyr::rename_if(!names(.) %in% colsNotRename, ~paste0("unknown.", .))
于 2019-05-13T08:45:14.697 回答
0

rename_atsetdiff(colnames(xx),colsNotRename)或一起使用-colsNotRename

library(dplyr)
xx %>% rename_at(vars(-colsNotRename), ~paste0('unknown.',.))
于 2019-05-13T08:05:18.980 回答