Reputation: 81
I am using gapminder and trying to write a simple function showing graphs of lifeExp
against gdpPercap
. However, when I put the arguments in the function, the arguments are not recognised.
I have tried several answers, with no results yet.
plotting <- function (input, xx, yy){
library (ggplot2)
library (gapminder)
ggplot (input, aes (xx, yy, size = pop, color = country)) + geom_point(show.legend = FALSE)
}
When I run plotting (gampinder, lifeExp, gdpPercap)
to be used as input, xx
and yy
, the result is
"Error in FUN(X[[i]], ...) : object 'gdpPercap' not found"`
This is where I am stuck and gdpPercap
is there but not found by the code!
Could you please help.
Upvotes: 8
Views: 3082
Reputation: 28331
You need to use tidy evaluation inside aes()
. Either .data[[ ]]
or {{ }}
(curly curly) would work. See also this answer and Tidy evaluation section in Hadley Wickham's Advanced R book.
library(gapminder)
library(rlang)
library(ggplot2)
plotting <- function(input, xx, yy) {
ggplot(input, aes(.data[[xx]], .data[[yy]], size = pop, color = country)) +
geom_point(show.legend = FALSE)
}
plotting(gapminder, "lifeExp", "gdpPercap")
plotting2 <- function(input, xx, yy) {
ggplot(input, aes({{xx}}, {{yy}}, size = pop, color = country)) +
geom_point(show.legend = FALSE)
}
plotting2(gapminder, lifeExp, gdpPercap)
Created on 2019-11-09 by the reprex package (v0.3.0)
Upvotes: 18