如何在 tidyr 和 ggplot2 的函数中使用 dplyr 的 enquo 和 quo_name

2023-11-25

library(dplyr) #Devel version, soon-to-be-released 0.6.0
library(tidyr)
library(ggplot2)
library(forcats) #for gss_cat data

我正在尝试编写一个函数,该函数结合了即将发布的dplyr开发版本与tidyr::gather and ggplot2。到目前为止,它似乎可以与tidyr,但我在绘图时遇到了麻烦。

下面的函数似乎适用于tidyr's gather:

GatherFun<-function(gath){
  gath<-enquo(gath)

  gss_cat%>%select(relig,marital,race,partyid)%>%
    gather(key,value,-!!gath)%>%
    count(!!gath,key,value)%>%
    mutate(perc=n/sum(n))
}

但我不知道如何使情节发挥作用。我尝试使用!!gath with ggplot2,但没有成功。

GatherFun<-function(gath){
  gath<-enquo(gath)

  gss_cat%>%select(relig,marital,race,partyid)%>%
    gather(key,value,-!!gath)%>%
    count(!!gath,key,value)%>%
    mutate(perc=n/sum(n))%>%
    ggplot(aes(x=value,y=perc,fill=!!gath))+
       geom_col()+
       facet_wrap(~key, scales = "free") +
       geom_text(aes(x = "value", y = "perc", 
                     label = "perc", group = !!gath),
                 position = position_stack(vjust = .05))
}

为了使这项工作我不得不使用dplyr::quo_name将 quosure 更改为字符串。我也不得不使用ggplot2::aes_string,这也要求所有输入都是字符串,因此用引号引起来"".

GatherFun <- function(gath){
  gath <- enquo(gath)
  gathN <- quo_name(gath)

  gss_cat %>% 
    select(relig, marital, race, partyid) %>%
    gather(key, value, -!!gath) %>%
    count(!!gath, key, value) %>%
    mutate(perc = round(n/sum(n), 2)) %>%
    ggplot() +
    geom_col(aes_string(x = "value", y = "perc", fill = gathN)) +
    facet_wrap(~key, scales = "free") +
    geom_text(aes_string(x = "value", y = "perc", label = "perc", group = gathN), 
              position = position_stack(vjust = .05))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 tidyr 和 ggplot2 的函数中使用 dplyr 的 enquo 和 quo_name 的相关文章

  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • 将列表中的列转换为 R 中的数据框

    我有使用 R 创建的以下列表 set seed 326581 X1 rnorm 10 0 1 Y1 rnorm 10 0 2 data data frame X1 Y1 lst lt replicate 100 df smpl lt dat
  • ggplot 中的错误问题:“grid.Call(”L_textBounds“, as.graphicsAnnot(x$label), x$x, x$y, … 中的错误”[重复]

    这个问题在这里已经有答案了 我试图在 ggplot 中制作一个条形图 其中我通过强制其中一些标签为长度为零的字符串 即 来指定要显示的标签 但是 我收到错误 Error in grid Call L textBounds as graphi
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • R 中的发散积分可在 Wolfram 中求解

    我知道我以前问过同样的问题 但由于我是新来的 这个问题问得不好而且不可重现 因此我在这里尝试做得更好 如果我只编辑旧的 可能没有人会读它 我有一个想要积分的二重积分 ff lt function g t exp 16 g exp 8 t t
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 使用predictNLS围绕R中的拟合值创建置信区间?

    我想使用 R 中 propogate 包中的 PredictNLS 围绕一大组拟合值构建置信区间 作为示例 我将使用它们在函数描述中引用的数据集 https rdrr io github anspiess propagate man pre
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • 使用 Google Apps 脚本创建草稿邮件

    我想知道是否可以使用 Google Apps 脚本创建草稿邮件 如果是的话 怎么可能 问候 塞巴斯蒂安 此时 无法创建出现在您的Drafts文件夹 之前已请求此功能 请参阅第985期 如果您有兴趣接收任何更新 请访问该问题并加注星标 EDI
  • Entity Framework Core 中的流畅 API、多对多

    我在 stackoverflow 上搜索了生成的正确解决方案多对多关系 使用 EF Core 代码优先和 Fluent API 一个简单的场景是 public class Person public Person Clubs new Has
  • 将 jQuery 插件与 Backbone 和 Requirejs 一起使用

    我正在使用backbone requirejs jquery 并且我在当前的html页面 准确地说是backbone html模板 中加载jquery插件时遇到问题 有我需要的配置 require config paths some cod
  • 如何判断文件夹是否打开?

    在我的应用程序中 我尝试重命名该文件夹 但如果在 Windows 资源管理器中打开该文件夹 我会得到一个IOException 如何在 C 中判断文件夹是否在 Windows 资源管理器中打开 捕获 IOException 正如其他人所说
  • Python 尝试例外

    try statement 1 statement 2 except Exception err print err pass 这可能很微不足道 但直到现在我才真正考虑过它 我发现自己无法回答以下问题 如果语句 1 中出现错误 语句 2 是
  • C/C++ 改变 const 的值

    我有一篇文章 但我把它弄丢了 它展示并描述了一些人们应该小心的 C C 技巧 其中之一让我感兴趣 但现在我正在尝试复制它 但无法将其编译 这个概念是有可能偶然改变一个值const在 C C 中 事情是这样的 const int a 3 I
  • 在 Javascript 中,即使从不抛出异常,使用 try-catch 块是否昂贵?

    当其中任何一个都没有抛出异常时 使用多个 try catch 块是否 慢 我的问题与this one 但对于 JavaScript 假设我有 20 个函数 其中包含 try catch 块 另一个函数调用这 20 个函数中的每一个他们都没有
  • 不同程序集中的两个分部类是否可以代表同一个类?

    我在名为 MyProject Data 的项目中有一个名为 Article 的类 它充当我的 Web 应用程序的数据层 我有一个名为 MyProject Admin 的单独项目 它是一个基于 Web 的管理系统 用于查看 编辑数据 并使用
  • AlamoFire 忽略缓存控制标头

    是否可以忽略cache control使用 AlamoFire 执行请求 处理响应时的标头 目前我正在发出如下请求 服务器返回大量cache control标头 而实际上我们需要忽略它们 Alamofire request GET url
  • Powershell - 使用 get-adcomputer 时过滤 OU

    我正在尝试创建一个脚本 该脚本根据计算机可能具有的特定属性生成计算机列表 例如 我试图列出 Windows XP 计算机和 Windows 7 计算机的列表 将它们的名称放入 csv 文件中 并输出每台计算机的最终计数 到目前为止 这是我的
  • 如何在 ASP.NET MVC 中禁用 HTTP Keep-Alive?

    有没有办法告诉 IIS ASP NET 不允许某些请求保持活动状态 或者甚至对于整个网站 如果这真的是唯一的方法吗 对于整个站点 使用 IIS 7
  • 如何用 PHP Heredoc 语法显示数组元素或对象属性的值

    我在定界符输入字段中显示数组值时遇到问题 这是一段代码 class Snippet protected user protected class protected messages public function construct th
  • JTable + 排序特定字段

    我有一个 JTable 并添加了排序 现在 JTable 有 5 列 日期字段中的第二列转换为 DD MM YYYY 并显示在单元格的 JTextField 中 当我将其按字符串排序并且日期混淆时 如何更改该特定列的排序行为 例如 按 AS
  • 脚本在 IDLE 中工作,但 .py 文件不起作用

    我有一个 tkinter 脚本 它在 IDLE 中运行得很好 但是 当我从 Windows 资源管理器中双击 py 文件时 控制台窗口会闪烁半秒 然后退出 我能够丝网打印控制台窗口 它说 etc etc NameError global n
  • 如何解析网页中的动态内容?

    我尝试从此网址获取代理列表 免费代理列表 这很酷 但是端口号是动态 JavaScript 内容 如何从此页面获取 JavaScript 生成的内容 我有 jsoup 和 djNativeSwing 但我想在后台线程中执行此操作 JWebBr
  • 比较 JPA 查询中的当前日期时间

    我想将数据库中的日期与 JPA 查询中的当前日期时间进行比较 捕获限制日期 我的要求如下 数据库 captureLimitDate 04 07 2012 19 03 00 当前日期时间 04 07 2012 20 03 00 我的 JPAQ
  • anaconda 无法导入 matplotlib.pyplot

    当我尝试导入 matplotlib pyplot 时出现此错误 我什至无法通过 conda install 安装 matplotlib pyplot 它显示了这一点 导入 matplotlib pyplot Traceback 最近一次调用
  • 没有默认构造函数的设计

    我想限制使用默认构造函数创建对象 因为我有如下设计 class Program static void Main string args BaseClass bc new BaseClass XmlSerializer xml new Xm
  • 从边界框坐标列表创建形状文件

    关于这个主题的现有问题已经很少了 但不幸的是我没有找到可以解决我的问题的东西 我有一个点经纬度坐标 即纬度 10 且经度 10 我想围绕该点创建一个 0 5 度边界框的形状文件 因此边界框应如下所示 最小长仓 9 75 最小纬度 9 75
  • 如何在 tidyr 和 ggplot2 的函数中使用 dplyr 的 enquo 和 quo_name

    library dplyr Devel version soon to be released 0 6 0 library tidyr library ggplot2 library forcats for gss cat data 我正在