使用标准评估使用Ggmosaic创建马赛克图的函数

时间:2017-01-28 06:55:00

标签: r ggplot2 dplyr tidyverse

库(ggmosaic) 库(tidyverse)

我仍然试图通过标准评估来学习编程的一些细微差别。对于这个问题,我试图使用ggmosaic中的“happy”数据集创建一个函数,以创建变量“health”和“happy”的基本镶嵌图。

以下是我想用于使用标准评估创建函数的代码。我希望能够从快乐数据集中输入任意两个分类变量,并创建代码中概述的基本马赛克图。

happy%>%
na.omit()%>%
count(happy,health)%>%
ggplot()+
geom_mosaic(aes(weight=n,x=product(health),fill=health))

然而,我无法完全正确地获得代码。我之前曾问过类似的问题,但我仍然在努力了解何时何地使用.dots参数以及如何在标准评估中指定输入。下面是我一直在玩的不正确的代码版本之一......

Mosaic<-function(product="health",fill="happy"){
happy%>%na.omit()%>%
count_(c(product,fill))%>%
ggplot()+
geom_mosaic(aes_string(weight="n",x=product(product),fill=fill))
}

任何能够让它发挥作用的指针都会受到高度赞赏,特别是有关如何使用SE正确编码的任何建议。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

Mosaic<-function(var_product="health",fill="happy"){
  happy%>%
    na.omit()%>%
    count_(c(var_product,fill))%>%
    ggplot(aes(weight=n))+
    geom_mosaic(aes_string(x=paste0("product(", var_product, ")"),fill=fill))
}

示例:

Mosaic("sex","degree")

enter image description here