函数中的 dplyr 管道

2023-12-04

我试图将 dplyr 管道放入函数中,但在多次阅读小插图以及整洁的评估之后(https://tidyeval.tidyverse.org/dplyr.html)。 我仍然无法让它工作......

#Sample data:
dat <- read.table(text = "A ID B
1   X   83
2   X   NA
3   X   NA
4   Y   NA
5   X   2
6   Y   2
12   Y   10
7   Y   18
8   Y   85", header = TRUE)

# What I'm trying to do:
x <- dat %>% filter(!is.na(B)) %>% count('ID') %>% filter(freq>3)
x$ID

# Now in a function:
n_occurences <- function(df, n, column){
  # Group by ID and return IDs with number of non-na > n in column
  column <- enquo(column)
  x <- df %>%
       filter(!is.na(!!column))  %>%
       count('ID') %>% filter(freq>n)
  x$ID
}

# Let's try:
col <- 'B'
n_occurences(dat, n=3, column = col)

没有错误,但是输出错误。这与整洁的评估有关,但我就是无法理解它。


With rlang_0.40,我们可以通过使用更容易地做到这一点{{...}}或卷曲运算符

library(rlang)
library(dplyr)
n_occurences <- function(df, n1, column){

 df %>%
   filter(!is.na({{column}}))  %>%
    count(ID) %>% 
    filter(n > n1) %>%
    pull(ID)

 }     

n_occurences(dat, n1 = 3, column = B)
#[1] Y
#Levels: X Y

如果我们打算传递带引号的字符串,请将其转换为符号 (sym),然后进行评估(!!)

n_occurences <- function(df, n1, column){

  column <- rlang::sym(column)
 df %>%
       filter(!is.na(!!column))  %>%
       count(ID) %>% 
       filter(n > n1) %>%
       pull(ID)

}


col <- 'B'
n_occurences(dat, n1=3, column = col)
#[1] Y
#Levels: X Y
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

函数中的 dplyr 管道 的相关文章

  • orderBy 随递减排序和递增排序的变化

    是否有一种标准方法可以按几列对 data frame 进行排序 但会发生减少或增加的变化 例如 您可能希望按一个变量 递减 和下一个变量 递增 对 data frame 进行排序 有没有类似的东西 mydf order mydf myvar
  • 将值添加到 R 中 for 循环内的向量

    我刚刚开始学习 R 我编写了这段代码来学习函数和循环 squared lt function x m lt c for i in 1 x y lt i i c m y return m squared 5 NULL 为什么这个返回NULL
  • 在闪亮仪表板中显示/隐藏菜单项

    当进入应用程序时 我需要隐藏一个菜单项 当用户选择某个值时 菜单项必须出现 我努力了shinyjs功能hidden 并且它隐藏了一个 menuItem 但是当使用show or toggle 菜单项不会出现 我发现了Rshinydashbo
  • 展平 ggplot2 中的 alpha 通道

    ggplot2 的某些对象 函数 支持 alpha 通道 http docs ggplot2 org current geom point html http docs ggplot2 org current geom point html
  • 中断、保存并稍后继续循环的最佳方法

    事情是这样的 我有一个需要几天时间才能运行的循环 我想中断循环 检查进度 然后稍后继续 目前 我正在使用以下内容 for i in 1 100000 Sys sleep i 2 5 print i write csv i i csv 我检查
  • 为 PDF 输出添加 natbib 选项

    有没有办法指定natibib输出 PDF 时的选项bookdown 我希望 tex 输出具有命令 usepackage sort compress natbib 但似乎没有任何方法可以在 YAML 中指定它 我无法将命令添加到我的序言中 因
  • 使用梯度下降(最速下降)估计线性回归

    示例数据 X lt matrix c rep 1 97 runif 97 nrow 97 ncol 2 y lt matrix runif 97 nrow 97 ncol 1 我已经成功创建了成本函数 COST lt function th
  • 添加不同的标签以在 ggplot R 中的堆积条形图中显示总计?

    我的问题有点类似 如何添加文本标签以显示ggplot中堆叠比例条的每个条中的总数n https stackoverflow com questions 65201095 how to add text label to show total
  • 如何编写一个也接受字符输入的 NES 函数?

    我正在开发一个将字符串作为函数参数的 R 包 现在我想使用非标准评估来允许非字符串输入 另外 为了保持向后兼容性 我想保留函数接受字符串的可能性 哈德利给出了example https cran r project org web pack
  • 哪种 LaTeX 包与 knit 一起使用以获得更多的表格控制?禁忌?

    我正在用 knitr 写一张更长的桌子xtable和tabular environment longtable 在 longtable 包中时print将它们纳入我的 Rnw file 问题是我对longtable环境控制不够 我有一些文本
  • R 中的 For 循环分配给数据框

    运行 for 循环后 我在分配给数据帧时遇到问题 当我使用 print 时 它给出了我的价值 有什么解释吗 salesdate lt rep seq from as Date 2013 12 19 to as Date 2013 12 23
  • 根据绘图单击事件对数据框进行子集化

    我有下面的数据框 Name lt c John Bob Jack Number lt c 3 3 5 NN lt data frame Name Number 还有一个简单闪亮的应用程序 可以从中创建一个绘图直方图 我的目标是单击直方图的一
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

    当我使用进行预测时forecast库 我注意到以下代码没有按预期运行 library forecast library dplyr df1 lt data frame gp gl 20 5 dt seq 1 100 get lt funct
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • 在 R 绘图上使用鼠标书写?

    我使用创建了散点图plot R 中的函数 有没有可能在这个图上画图 我想添加一条直线并获取它的参数 但在我看来abline 可能会很不方便 我想画很多条线 然后选择一条最合适的 我怎样才能完成这个任务 看看 RStudio 和这个例子 li
  • 如何连接 R 列表中的多个 .wav 文件?

    我有一个 wav 文件列表my list library seewave library tuneR data tico audio lt tico freq lt 22050 breaks lt c 0 0 2 0 4 0 6 0 8 i
  • 将英寸高度的字符向量转换为厘米?

    我得到一个字符向量 tibble H c 6 2 5 10 5 5 5 1 5 5 5 4 我想将其转换为厘米 请告知我该怎么做 有几种方法可以使用 1 阅读与fread粘贴到单个字符串后 library data table fread
  • 在 R 中高效加载稀疏矩阵

    我在将数据有效加载到 R 中的稀疏矩阵格式时遇到问题 这是我当前策略的 不完整 示例 library Matrix a1 Matrix 0 5000 100000 sparse T for i in 1 5000 a1 i idxOfCol
  • R 中的频率加权,与 Stata 的结果比较

    我正在尝试分析明尼苏达大学 IPUMS 数据集中的数据1990 年美国人口普查 http usa ipums org usa sampdesc shtml us1990a in R 我正在使用survey http faculty wash

随机推荐

  • 如何将宽表格水平跨多个页面?

    我正在寻找一种方法来分割宽表 以便它们跨越多个页面 目标是使具有大量列的表可读 我找到了一个涵盖该主题的讨论线程 但是 其中引用的示例不可用 Manning 的 iText in Action 2006 没有涵盖这个主题 1 4 8 版本可
  • Python 掷骰子模拟

    我在编写代码时遇到问题 需要将六面骰子滚动 1000 次 然后返回骰子上每个数字滚动的次数列表 代码运行得很好 我可以在最后得到一个列表 但我的列表一直用 0 代替 4 所以看起来我的函数没有对正在滚动的数字 4 进行标签 或者根本没有滚动
  • 关闭iframe并刷新父跨域

    我有一个加载到其他人页面上的 iframe 当 iframe 关闭时 我想刷新父页面 我目前采用类似于此处描述的哈希黑客 关闭iframe跨域 不过这种方法在 IE9 中会带来安全问题 所以我仍在寻找更好的解决方案或 IE 解决方法 有任何
  • 在 Android 中使用 Jsoup

    我在 android 应用程序中有一个简单的代码 我在其中使用一个简单的 jsoup 代码来连接到链接并获取在线广播的标题 但是当我单击 播放 按钮时 我的应用程序因崩溃而退出 这是我的 onClick 操作 btnPlay setOnCl
  • 在Python中调用select

    我正在尝试编写一个套接字服务器 服务器本身并没有完成任何有趣的事情 现在我的问题是 python 抱怨我的 select 参数 这是一段代码 read client sockets the socket clients write clie
  • 为什么 [1].append(2) 计算结果为 None 而不是 [1,2]? [复制]

    这个问题在这里已经有答案了 为什么print 1 append 2 评估为 无 我预计 1 2 gt gt gt print 1 append 2 None 那是因为追加什么也不返回 None gt gt gt print 1 append
  • 尽管设置了大小, 标记中的图像默认为 0 x 0 像素

    由于某种原因 我无法在使用时设置图像大小 img 标签内的html5 video元素 它总是默认回到0 x 0 像素 我使用这个的原因img是作为古代浏览器的后备 视频标签不起作用 这是我的代码注意我故意删除了 myVideo mp4 来模
  • 如何快速将背景图像缩放到屏幕尺寸?

    我正在尝试使用图案图像快速为我的背景制作 UIView 图像 我的代码运行良好 除了我希望图像占据整个屏幕这一事实 我的代码如下所示 self view backgroundColor UIColor patternImage UIImag
  • 在 Swift 中从字节数组生成 HMAC-SHA256

    我想为 myJD REST API 创建签名 但第一个片段不起作用 我与支持人员交谈 他们告诉我我需要unhexed创建正确哈希的密钥 因此 我创建了一个十六进制值的字节数组 并更改了代码以再次工作 请参阅第二个片段 两种方法具有相同的结果
  • 数据库会话上下文中的更改随着池连接的重用而持续存在

    在我的应用程序中 我有需要访问数据库的多线程 我正在使用apache tomcat jdbc pool DataSource作为 JDBC 连接池 在某些情况下 用户在执行另一个查询来检索某些数据之前执行可能会影响数据库会话上下文 变量的存
  • 每天 dplyr 计数观测值

    我有以下数据 Name Date Message Ted Foe 2011 06 10T05 06 30 0000 I love this product Sina Fall 2011 06 10T05 07 33 0000 Not my
  • 用于密码验证的正则表达式

    我需要验证符合以下条件的密码 最少 8 个字符 包含数字和字母的组合 不得强制使用特殊字符 以下正则表达式是我想出的 8 d a zA Z 但这失败了 1密码 1个密码 1个密码 据我所知 试图调查正则表达式 8 表示最小值为 8 并且不关
  • ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎ ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎ ๎๎๎ํํํํํํํํํํํํํํํ为什么这个角色永远不会结束? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 你有没有注意到网页中的这个字符 由 0x0EOF 0x0E4E 和 0x0E4D
  • 在 oracle 中连接时对字符串进行排序

    我正在使用collect 函数来连接sql 查询的字符串 select id tab to string CAST COLLECT a level d Number to char nvl de eventDate SYSDATE 365
  • 如何在 Rails 中设置默认值?

    我正在尝试找到为 Rails 中的对象设置默认值的最佳方法 我能想到的最好的方法是在new控制器中的方法 如果这是可以接受的或者是否有更好的方法 是否有人有任何意见 正确 在 Ruby 中是一个危险的词 做任何事情通常有不止一种方法 如果你
  • 如何使用合并分支对 TFS 拉取请求中的 Jenkins 作业进行排队

    我们在 TFS 2017 3 中有一个 Git 存储库 我们的构建在 Jenkins 上运行 我们希望在拉取请求中实现构建验证 因此我们创建了一个构建定义 该定义对 Jenkins 作业进行排队 并在 作业参数 中输入BRANCH Syst
  • 为数组中的每两个元素创建对

    如何简洁地编写一个函数 以便它使用数组中的每对元素创建一个新的对象数组 假设元素数量为偶数 输入示例 input 1 42 55 20 3 21 Output output x 1 y 42 x 55 y 20 x 3 y 21 Edit
  • 单页根据当前位置隐藏/显示部分

    我正在开发单页网站 每个页面都组织成部分标签 每个部分都放置在彼此的顶部 我需要一种使用 jquery 的方法 根据当前位置 DOM 将隐藏其余部分 例如 按下 关于 链接将带您进入 关于 部分 我当前的 DOM 结构
  • 从标记模板文字函数参数推断类型

    我想从标记模板文字函数中的通用参数获取类型 但打字稿无法从参数 模板 中读取 它只是将类型读取为 TemplateStringsArray const tag
  • 函数中的 dplyr 管道

    我试图将 dplyr 管道放入函数中 但在多次阅读小插图以及整洁的评估之后 https tidyeval tidyverse org dplyr html 我仍然无法让它工作 Sample data dat lt read table te