使用函数式编程用 dplyr 重命名列

Rename column with dplyr with functional programming

我想重命名很多列。现在我重写每列的语句:

df <- data.frame(col1 = 1:4, col2 = c('a', 'b', 'c', 'd'), col3 = rep(1,4))
df %>% 
    rename(col1 = col1_new) %>%
    rename(col2 = col2_new) %>%
    rename(col3 = col3_new)

如何避免重复重命名语句?有使用 R 的函数式编程的解决方案吗?

使用 setNames 比使用 rename

更容易
df %>% 
   setNames(., paste0(names(.), "_new"))
#   col1_new col2_new col3_new
#1        1        a        1
#2        2        b        1
#3        3        c        1
#4        4        d        1

如果没有限制,例如所有步骤都应在 %>% 内完成,更简单和通用的方法是

colnames(df) <- paste0(colnames(df), "_new")