standard eval with ggplot2 without `aes_string()`

前端 未结 2 1131
不知归路
不知归路 2021-01-12 23:08

I\'d like to pass a quoted string to a function that calls ggplot2.

library(magrittr); library(ggplot2)
g1 <- function( variable ) {
  ggplot(mtcars, aes_         


        
2条回答
  •  醉梦人生
    2021-01-12 23:22

    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)
    

提交回复
热议问题