Home > Enterprise >  How to use rename_with() in pipe to change all column names from vector
How to use rename_with() in pipe to change all column names from vector

Time:11-07

I want to apply new column names from a vector to a dataframe.

There are already good answers to this question: Applying dplyr's rename to all columns while using pipe operator, How do I add a prefix to several variable names using dplyr?

My question is explicitly: What is the equivalent of rename_with to this:

newcolnames <- c("one", "two", "three", "four", "five")

head(iris) %>% 
  setNames(newcolnames)

head(iris) %>% 
  `colnames<-`(newcolnames)

I tried:

head(iris) %>% 
  rename_with(iris, newcolnames)

I want to use explicitly rename_with!

CodePudding user response:

It doesn't seem like rename_with is the right function for this. I guess you could do

iris %>% 
  rename_with(~newcolnames)

as kind of a hack. You can also use rename

iris %>% 
  rename(!!!setNames(names(.), newcolnames))

But the setNames method just seems much more apt.

  • Related