如何将ggplot的AES参数传递给函数

我正在使用gapminder并尝试编写一个简单的函数,显示lifeExpgdpPercap的图形。但是,当我将参数放入函数中时,这些参数将无法识别。

我尝试了几个答案,但都没有结果。

plotting <- function (input,xx,yy){
  library (ggplot2)
  library (gapminder)
  ggplot (input,aes (xx,yy,size = pop,color = country)) + geom_point(show.legend = FALSE) 
}  

当我运行plotting (gampinder,lifeExp,gdpPercap)用作输入xxyy时,结果为

  

“ FUN(X [[i]],...)中的错误:找不到对象'gdpPercap'””

这是我被困住的地方,gdpPercap在这里,但是在代码中找不到! 你能帮忙吗?

villsonhua 回答:如何将ggplot的AES参数传递给函数

您需要在aes()内使用tidy evaluation.data[[ ]]{{ }}curly curly)均可使用。另请参阅Hadley Wickham的Advanced R书中的this answerTidy evaluation section

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,aes({{xx}},{{yy}},color = country)) +
    geom_point(show.legend = FALSE)
}

plotting2(gapminder,lifeExp,gdpPercap)

reprex package(v0.3.0)于2019-11-09创建

本文链接:https://www.f2er.com/3130177.html

大家都在问