Hi,
I found a way to use rename with tidyeval to allow renaming columns with a named vector or a named list. I think it is quite elegant and quite obvious when written down, but it took me a little while to get my head around it, as it uses the new tidyeval paradigm. And as I do not have a blog or anything, I thought that I would post it here in case anyone is interested.
library(rlang)
library(dplyr)
iris <- as_tibble(iris)
named_vector <- c('id' = 'Species',
'sepal' = 'Sepal.Length')
iris %>% rename(!!! named_vector) %>% head(2)
# A tibble: 2 x 5
sepal Sepal.Width Petal.Length Petal.Width id
<dbl> <dbl> <dbl> <dbl> <fctr>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
named_list <- list('id' = 'Species',
'sepal' = 'Sepal.Length')
# If you want to select and rename at the same time, you can use select the same way
iris %>% select(!!! named_vector) %>% head(2)
# A tibble: 2 x 2
id sepal
<fctr> <dbl>
1 setosa 5.1
2 setosa 4.9
I think something of this kind could be included in the examples of dplyr::select / dplyr::rename because it is a use case that is not directly related to programming with dplyr. I think a user looking for that feature shouldn't have to go through the programming with dplyr vignette.
So my question is, should I make an issue to ask for it to be included in the examples? Or should I make a PR to propose it myself directly? Are those kind of PRs welcomed?
Thanks