如何在dplyr :: rename的!%in%列表中添加data.frame列名的前缀?

时间:2019-05-13 08:01:07

标签: r dplyr tidyverse tidyselect

我有一个列名列表,不想更改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 _

寻找解决此问题的方法

2 个答案:

答案 0 :(得分:0)

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

library(dplyr)
xx %>% rename_at(vars(-colsNotRename), ~paste0('unknown.',.))

答案 1 :(得分:0)

另一个带有rename_if的解决方案

library(dplyr)
xx %>% dplyr::rename_if(!names(.) %in% colsNotRename, ~paste0("unknown.", .))