The following *reprex* boils down to a single question, **is there anyway we can use the quoted variable names inside `ggplot2::aes()` instead of the plain text names**? Example: we typically use `ggplot(mpg, aes(displ, cyl))` , how to make `aes()` work normally with `ggplot(mpg, aes("displ", "cyl"))` ?
If you understood my question, the remainder of this *reprex* really adds no information. However, I added it to draw the full picture of the problem.
***
More details: I want to use *purrr* functions to create a bunch of routinely exploratory data analysis plots effortlessly. The problem is, `purrr::pmap()` results the string-quoted name of the variables, which `ggplot::aes()` doesn't understand. As far as I'm concerned, the functions `cat()` and `
as.name()` can take the string-quoted variable name and return it in the very typical way that `aes()` understands; unquoted. However, neither of them worked. The following reprex reproduces the problem. I commented the code to spare you the pain of figuring out what the code does.
```{r}
library(tidyverse)
# Divide the classes of variables into numeric and non-numeric. Goal: place a combination of numeric variables on the axes wwhile encoding a non-numeric variable.
mpg_numeric <- map_lgl(.x = seq_along(mpg), .f = ~ mpg[[.x]] %>% class() %in% c("numeric","integer"))
mpg_factor <- map_lgl(.x = seq_along(mpg), .f = ~ mpg[[.x]] %>% class() %in% c("factor","character"))
# create all possible combinations of the variables
eda_routine_combinations <- expand_grid(num_1 = mpg[mpg_numeric] %>% names(),
num_2 = mpg[mpg_numeric] %>% names(),
fct = mpg[mpg_factor] %>% names()) %>%
filter(num_1 != num_2) %>% slice_head(n = 2) # for simplicity, keep only the first 2 combinations
# use purrr::pmap() to create all the plots we want in a single call
pmap(.l = list(eda_routine_combinations$num_1,
eda_routine_combinations$num_2,
eda_routine_combinations$fct) ,
.f = ~ mpg %>%
ggplot(aes(..1 , ..2, col = ..3)) +
geom_point() )
```
Next we pinpoint the problem using a typical *ggplot2* call.
this is what we want `purrr::pmap()` to create in its iterations:
```{r}
mpg %>%
ggplot(aes(displ , cyl, fill = drv)) +
geom_boxplot()
```
However, this is `purrr::pmap()` renders; quoted variable names:
```{r}
mpg %>%
ggplot(aes("displ" , "cyl", fill = "drv")) +
geom_boxplot()
```
***
# Failing attempts
Using `cat()` to transform the quoted variable names from `pmap()` into unquoted form for `aes()` to understand fails.
```{r}
mpg %>%
ggplot(aes(cat("displ") , cat("cyl"), fill = cat("drv"))) +
geom_boxplot()
```
Using `
as.name()` to transform the quoted variable names from `pmap()` into unquoted form for `aes()` to understand fails.
```{r}
mpg %>%
geom_boxplot()
```
***
# Bottom line
Is there a way to make `ggplot(aes("quoted_var_name"))` work properly?