根据外部值有条件地应用管道步骤

2023-11-27

鉴于 dplyr 工作流程:

require(dplyr)                                      
mtcars %>% 
    tibble::rownames_to_column(var = "model") %>% 
    filter(grepl(x = model, pattern = "Merc")) %>% 
    group_by(am) %>% 
    summarise(meanMPG = mean(mpg))

我有兴趣有条件申请filter取决于的值applyFilter.

Solution

For applyFilter <- 1使用以下内容过滤行"Merc"字符串,不带过滤器all返回行。

applyFilter <- 1


mtcars %>%
  tibble::rownames_to_column(var = "model") %>%
  filter(model %in%
           if (applyFilter) {
             rownames(mtcars)[grepl(x = rownames(mtcars), pattern = "Merc")]
           } else
           {
             rownames(mtcars)
           }) %>%
  group_by(am) %>%
  summarise(meanMPG = mean(mpg))

Problem

建议的解决方案效率低下,因为ifelse调用总是被评估;更理想的方法只会评估filter迈出一步applyFilter <- 1.

Attempt

The 效率低下工作解决方案如下所示:

mtcars %>% 
    tibble::rownames_to_column(var = "model") %>% 
    # Only apply filter step if condition is met
    if (applyFilter) { 
        filter(grepl(x = model, pattern = "Merc"))
        }
    %>% 
    # Continue 
    group_by(am) %>% 
    summarise(meanMPG = mean(mpg))

当然,上面的语法是不正确的。这只是理想工作流程的示例。


想要的答案

  • 我对创建临时对象不感兴趣;工作流程应类似于:

    startingObject
        %>%
        ...
        conditional filter
        ...
        final object
    
  • 理想情况下,我希望找到一个可以控制是否filter呼叫是否正在评估


这种方法怎么样:

mtcars %>% 
    tibble::rownames_to_column(var = "model") %>% 
    filter(if(applyfilter== 1) grepl(x = model, pattern = "Merc") else TRUE) %>% 
    group_by(am) %>% 
    summarise(meanMPG = mean(mpg))

这意味着grepl仅当 applyfilter 为 1 时才进行评估,否则filter只是回收一个TRUE.


或者另一种选择是使用{}:

mtcars %>% 
  tibble::rownames_to_column(var = "model") %>% 
  {if(applyfilter == 1) filter(., grepl(x = model, pattern = "Merc")) else .} %>% 
  group_by(am) %>% 
  summarise(meanMPG = mean(mpg))

显然还有另一种可能的方法,您可以简单地破坏管道,有条件地执行过滤器,然后继续管道(我知道OP没有要求这样做,只是想为其他读者提供另一个例子)

mtcars %<>% 
  tibble::rownames_to_column(var = "model")

if(applyfilter == 1) mtcars %<>% filter(grepl(x = model, pattern = "Merc"))

mtcars %>% 
  group_by(am) %>% 
  summarise(meanMPG = mean(mpg))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据外部值有条件地应用管道步骤 的相关文章

  • R中添加水印

    我在用magickR中的库 我想在一些图片上添加水印 I used image annotate功能如下 img lt image read C Users Maydin Desktop manzara png image annotate
  • R 根据事件更新值

    我最近发布了这个问题 该问题已经与我在笔记本电脑上本地使用的 Mysql 数据库相关 由于我在 Mysql 中没有找到问题的解决方案 其他人似乎也没有找到解决方案 所以我想再次发布它 但现在与 R 相关 我使用带有 RMysql 包的数据库
  • R 中具有稳健回归的异常值

    我正在使用lmrobR 中的函数使用robustbase用于稳健回归的库 我会把它用作 rob reg lt lmrob y 0 dat method MM control a1 当我想返回我使用的摘要时summary rob reg 稳健
  • 如何在R中删除重复项

    我有一个非常大的数据集 如下所示 df lt data frame school c a a a b b c c c year c 3 3 1 4 2 4 3 1 GPA c 4 4 4 3 3 3 2 2 school year GPA
  • 在 R 中创建一个运行计数变量?

    我有一个足球比赛结果的数据集 我希望通过创建一组类似于世界足球 Elo 公式的运行评级来学习 R 我遇到了麻烦 在 Excel 中看似简单的事情在 R 中并不完全直观 例如 4270 个观察中的前 15 个具有必要的变量 date t 1
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • R 中的快速 QR 分解

    我有大量矩阵 需要对其执行 QR 分解并存储生成的 Q 矩阵 进行归一化 以便 R 矩阵在其对角线上具有正数 除了使用之外还有其他方法吗qr 功能 这是工作示例 system time Parameters for the matrix t
  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • TeamCity 将功能分支推送到主分支

    有没有办法将成功构建的功能分支推送到另一个分支 我想要这样的东西 Git 存储库 Gitorious GitHub 等 分支机构 master 当前项目的代码 质量保证 代码等待 QA 的分支 功能分支 许多远程分支 开发人员可以在其中开发
  • API 请求和curl::curl_fetch_memory(url, handle = handle) 中的错误:SSL 证书问题:证书已过期

    几天前 我运行了代码几个月 没有任何问题 GET url myurl query 今天我遇到一个错误 Error in curl curl fetch memory url handle handle SSL certificate pro
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集

随机推荐

  • 如何在Python中读取/dev/random

    我在一本书上读到 dev random就像一个无限文件 但是当我设置以下代码来查看内容是什么样子时 它什么也不打印 with open dev random as f for i in xrange 10 print f readline
  • ValueError:输入 0 与层 conv_1 不兼容:预期 ndim=3,发现 ndim=4

    我正在尝试制作一个变分自动编码器来学习编码 DNA 序列 但遇到了意外错误 我的数据是一组单热数组 我遇到的问题是值错误 它告诉我 我有一个四维输入 而我的输入显然是三维的 100 4008 4 事实上 当我打印出seq层 它说它的形状是
  • 删除超过 2 小时的 Firebase 数据

    我想删除超过两个小时的数据 目前 在客户端 我循环遍历所有数据并对过时的数据运行删除 当我这样做时 db on value 每次删除某些内容时都会调用该函数 另外 只有当客户端连接时才会删除内容 如果两个客户端同时连接会发生什么 我在哪里可
  • 有没有办法与 Netbeans 和 Github 一起工作,同步它们

    有没有办法与 Netbeans 和 Github 一起工作 同步它们 Netbeans 或其他东西的 Github 插件 Update NetBeans 7 0 现在在某些功能级别上对 Git 提供本机支持 它可以从 插件门户 更新中心 工
  • 如何更改 NuGet 包中的目标文件名?

    JavaScript 命名约定要求文件名中包含版本号 例如jQuery 1 34 min js 我有将输出的文本模板my library js在输出文件夹中 我想创建 NuGet 包my library js以这种方式 在安装时应将其部署为
  • 需要在 Singleton 类中私有化赋值运算符

    有人可以证明在 Singleton 类实现中私有化赋值运算符的必要性吗 它解决了什么问题Singleton operator Singleton const 私人的 class Singleton public static Singlet
  • 将对象的 NSMutableArray 保存/写入磁盘?

    最初我认为这会起作用 但现在我明白它不会起作用 因为artistCollection是一个 Artist 对象的NSMutableArray interface Artist NSObject NSString firName NSStri
  • 如何保存使用rhandsontable r包所做的编辑

    我的 R 程序按预期工作 它显示了一个包含我的数据帧的表 并允许我编辑值 如何捕获这些值并将它们保存到我的数据框或数据框的副本中 require shiny library rhandsontable DF data frame val 1
  • JavaFX 8 3D场景交点

    是否有可能在 JavaFX 8 3D 场景中沿着射线 例如 PickRay 找到点 从 3D 空间中具有某个 3D 方向向量的任意点开始 其中射线与网格中的三角形 MeshView 内的 TriangleMesh 相交 我知道这是在 Cam
  • 使用严格的 null 检查处理 Typescript 2.0 中的数组移位返回类型

    在我的具有严格 null 检查的 Typescript 2 0 项目中 我有一个数组 private timers ITimer 和一个 if 语句 if this timers length gt 0 this timers shift
  • 检查返回的文件是否为XML

    我需要检查网站输出的返回值 如果登录详细信息有效 它会返回一个 XML 文件 如果登录详细信息无效 它只会返回一个字符串 显示 您输入了无效 ID 我的问题是我用这个代码来检查 ch curl init curl setopt ch CUR
  • C# - 从特定应用程序捕获 Windows 消息

    我正在编写一个需要拦截的 C 应用程序窗口消息另一个应用程序正在发送 编写我正在监视的应用程序的公司向我发送了一些示例代码 但它是用 C 编写的 我不太了解 在 C 示例代码中 我得到了它们使用以下代码 UINT uMsg Register
  • 在 AXIOS 中发送 GET 方法的请求正文会引发错误

    我有一个 React 应用程序 我将 POST 方法更改为 GET 并按原样请求正文 它适用于 POST 请求 但是当我将方法更改为 GET 时 它给了我错误 message org springframework http convert
  • 基于gradle构建更新IntelliJ中的单一依赖

    是否可以让 IntelliJ 更新单个依赖项 而不必通过 Gradle 侧选项卡中的 刷新所有 Gradle 项目 按钮刷新所有依赖项 我问的原因是 我们的项目的完全刷新需要几分钟 足够长的时间让我写这个问题 我只想更新对我正在本地更新的另
  • 是否可以获得转换后的绘图数据? (例如点图中的点坐标、密度曲线)

    我想知道是否可以在 ggplot2 图中获取转换后的数据 特别是 我有兴趣获取点图中点的坐标和大小 以便在另一个绘图库中使用它们 d3 js 我怎样才能提取这些信息 这是情节 g ggplot data frame x rnorm 100
  • 控制台应用程序 - 当前工作线上方的 WriteLine

    我看过其他一些与此非常相似的帖子 但他们给出的答案并没有正确回答问题 抱歉 如果有什么隐藏的东西我找不到 我想使用 Console WriteLine 打印当前 Console ReadLine 上方的内容 例如 我的应用程序打印 Hell
  • 将变量编号分配给复数数组

    我想将复杂数组分配为变量 我的代码就像 complex indx 3 3 integer i j do i 1 3 do j 1 3 indx i j i j write indx i j end do end do 在这种情况下我收到类似
  • 在后面的代码中设置显示属性

    如何将显示属性设置为在后面的代码中阻止
  • 升级到 Gradle 7 后 Android Gradle Javadoc 损坏

    几天前 我升级到了新的 Android Studio Arctic Fox 版本 现在也需要 Gradle 7 在升级之前 我有以下 javadoc 任务 它运行得很好 def javaDocsAllowList com mycompany
  • 根据外部值有条件地应用管道步骤

    鉴于 dplyr 工作流程 require dplyr mtcars gt tibble rownames to column var model gt filter grepl x model pattern Merc gt group