I am trying to select a theme from ggplot2
based on some string given. For demo purposes, consider the following code:
library(dplyr); library(ggplot2)
mtcars %>%
ggplot(aes(mpg, wt))+
geom_point() -> p
all_ggplot2_funs <- getNamespaceExports("ggplot2")
p +
eval(parse(text=paste0(all_ggplot2_funs[grep("theme_", all_ggplot2_funs)][15],
"()")))
This works fine and would allow me to use theme_minimal
. However, from a security point of view as highlighted in past threads on the eval-parse
scenario in different languages, I would like to avoid this.
I could probably use do.call
but was looking at something akin to python
's ()
where I can just call a function based on a string e.g.
methods = {pi: math.pi, sum: math.sum}
methods["pi"]()
What could be an R base
way to achieve this?