rdplyrquosure

Selecting columns from dataframe programmatically when column names have spaces


I have a dataframe which I would like to query. Note that the columns of that dataframe could change and the column names have spcaes. I have a function that I want to apply on the dataframe columns. I figured I could programmatically find out what columns exists and then use that list of columns to apply function to the columns that exist.

I was able to figure out how to do that when the column names don't have spaces: See the code below

library(tidyverse)
library(rlang)
col_names <- c("cyl","mpg","New_Var")
cc <- rlang::quos(col_names)
mtcars%>%mutate(New_Var=1)%>%select(!!!cc)

But when the column names have spaces, this method does not works, below is the code I used:

col_names <- c("cyl","mpg","`New Var`")
cc <- rlang::quos(col_names)
mtcars%>%mutate(`New Var`=1)%>%select(!!!cc)

Is there a way to select columns that have spaces in their name without changing their names ?


Solution

  • You have to do nothing differently for values with spaces. For example,

    library(dplyr)
    library(rlang)
    
    col_names <- c("cyl","mpg","New Var")
    cc <- quos(col_names)
    mtcars %>% mutate(`New Var`=1) %>% select(!!!cc)
    

    Also note, that select also accepts string names so this works too :

    mtcars%>% mutate(`New Var`=1) %>% select(col_names)