Si trato de componer manualmente algunos elementos de una parcela ggplot2
, funciona muy bien:¿Cómo puedo combinar múltiples elementos ggplot2 en el retorno de una función?
> p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
> p + geom_vline(xintercept = 20) + geom_point(data = mtcars)
Pero si intento para agrupar algunos de la composición en una función, me sale un error:
> myFunction <- function() {
+ return(
+ geom_vline(xintercept = 20) + geom_point(data = mtcars)
+ )
+ }
> p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
> p + myFunction()
Error in geom_vline(xintercept = 20) + geom_point(data = mtcars) :
non-numeric argument to binary operator
¿Me falta algo en la notación ggplot2
para combinar correctamente ggplot2
elementos dentro de un cuerpo de función?
Creo que el operador '+' requiere que uno de los argumentos sea de la clase 'ggplot' para que funcione correctamente su magia. Los geoms no son objetos 'ggplot', pero el argumento' p' es. – Sharpie