standard eval with ggplot2 without `aes_string()`
A work-around is to substitute a common name for the variable name of interest in your function:
g1 <- function( variable ) {
colnames(mtcars) <- gsub(variable, "variable", colnames(mtcars))
ggplot(mtcars, aes(x=wt, y=variable, size=carb)) +
geom_point() + ylab(variable)
}
variables <- c("mpg", "cyl", "disp")
variables %>%
lapply(g1)
You can do this using the !!
operator on the variable after call to sym
. This will unquote and evaluate variable
in the surrounding environement.
library(rlang)
g1 <- function( variable ) {
ggplot(mtcars, aes(x = wt, y = !! sym(variable) , size = "carb")) +
geom_point()
}
g1("mpg")
variables <- c("mpg", "cyl", "disp")
variables %>%
lapply(g1)