You can use select_ , as Gregor suggested, but you don't need to.
library(dplyr) x <- read.csv(text = "sd1_scale1,sd1_scale2,sd1_scale3,sd2_scale1,sd2_scale2,sd2_scale3 1,2,3,4", header = TRUE) makeData1 <- function(x, sdNumber) { # Using `one_of` as explained in ?select select(x, one_of(paste0("sd", sdNumber, "_scale", 1:2))) } makeData2 <- function(x, sdNumber) { # Same effect using nonstandard evaluation, see vignette("nse") select_(x, .dots = paste0("sd", sdNumber, "_scale", 1:2)) } x %>% makeData1(2) x %>% makeData2(2) # same result
I got it from that meaning
source share