如何编写一个函数来一次重命名多个列?

时间:2018-07-21 21:27:30

标签: r function dplyr multiple-columns rename

df1 <- df %>% 
  rename(newcol1 = oldcol1) %>% 
  rename(newcol2 = oldcol2) %>% 
  rename(newcol3 = oldcol3) %>% 
  rename(newcol4 = oldcol4) %>% 
  rename(newcol5 = oldcol5) 

我正在尝试编写一个我刚刚学到的函数,该函数将执行与上述相同的操作。

renaming = function(df, oldcol, newcol) {
rename(df, newcol = oldcol)

但是我不确定如何处理多列。 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

使用基数R

names(df) <- c("newname1", "newname2", "newname3") # for all varnames
names(df)[c(1,3,4)] <- c("newname1", "newname3", "newname4") # for varnames 1,3,4
names(df)[names(df) == "oldname"] <- "newname" # for one varname

使用data.table

setnames(dt, old=c("oldname1", "oldname2"), new=c("newname1", "newname2"))

使用dplyr / tidyverse

df %>% rename(newname1 = oldname1, newname2 = oldname2)

答案 1 :(得分:0)

您可以使用tidyverse软件包set_names中的purrr

可复制的示例:

> df <- iris
> df1 <- df %>% 
     purrr::set_names(c("d","x","y","z","a"))

> df1
      d   x   y   z          a
1   5.1 3.5 1.4 0.2     setosa
2   4.9 3.0 1.4 0.2     setosa
3   4.7 3.2 1.3 0.2     setosa