Search code examples
rdplyrtidyselect

dplyr everything() argument string select_


I need to use the underscored string version of select in dplyr along with the everything() argument. It is not working.

library(dplyr)
#this works just fine
select(iris, Species, everything()) %>% head()

  Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1  setosa          5.1         3.5          1.4         0.2
2  setosa          4.9         3.0          1.4         0.2
3  setosa          4.7         3.2          1.3         0.2
4  setosa          4.6         3.1          1.5         0.2
5  setosa          5.0         3.6          1.4         0.2
6  setosa          5.4         3.9          1.7         0.4

#this fails
select_(iris, "Species", everything()) %>% head()

Error: No tidyselect variables were registered

Is there an underscored argument of everything which I am missing?


Solution

  • The _ method is getting deprecated. Instead, we can use sym from rlang to convert it to symbol and then evaluate

    library(dplyr)
    select(iris, !!rlang::sym("Species"), everything()) %>%
              head()
    #     Species Sepal.Length Sepal.Width Petal.Length Petal.Width
    #1  setosa          5.1         3.5          1.4         0.2
    #2  setosa          4.9         3.0          1.4         0.2
    #3  setosa          4.7         3.2          1.3         0.2
    #4  setosa          4.6         3.1          1.5         0.2
    #5  setosa          5.0         3.6          1.4         0.2
    #6  setosa          5.4         3.9          1.7         0.4