首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在tibble上有没有一个辅助函数可以让代码变得更干净?

在tibble上有一个辅助函数可以让代码变得更干净,那就是pipe()函数。pipe()函数允许将多个操作连接在一起,使代码更加简洁和可读。

使用pipe()函数,可以按照顺序将多个操作应用于tibble数据框。例如,可以使用pipe()函数将数据筛选、变换、汇总等操作连接在一起,而不需要创建中间变量。

以下是使用pipe()函数的示例代码:

代码语言:txt
复制
library(tibble)

# 创建一个示例数据框
data <- tibble(
  x = c(1, 2, 3, 4, 5),
  y = c(6, 7, 8, 9, 10)
)

# 使用pipe()函数进行操作
result <- data %>%
  filter(x > 2) %>%
  mutate(z = x + y) %>%
  summarise(total = sum(z))

# 打印结果
print(result)

在上述示例中,首先使用filter()函数筛选出x大于2的行,然后使用mutate()函数添加一个新的列z,最后使用summarise()函数计算z列的总和。通过使用pipe()函数,可以将这些操作连接在一起,使代码更加简洁和易于理解。

对于tibble上的其他操作,也可以使用pipe()函数来简化代码。例如,可以使用pipe()函数将数据分组、排序、重塑等操作连接在一起。

总之,pipe()函数是一个在tibble上进行操作时非常有用的辅助函数,可以使代码更加干净、简洁和可读。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6个编写优质干净代码的技巧

以下是目录内容: 编写干净代码的好处 容易开始和继续一个项目 有利于团队新员工培训 容易遵循编码模式 写干净代码的技巧 编写可读的代码 为变量、函数和方法使用有意义的名称 每个函数或方法只执行一个任务...2.有利于团队新员工培训 编写干净代码的另一个好处与第一个好处是密切相关的,那就是可以新员工容易更快地使用代码。假设我们需要雇佣一个开发人员,那么她要花多长时间才能理解代码并学会使用它呢?...3.一个函数或方法只执行一个任务 当开始编写代码时,使用的函数和方法看起来就像一把瑞士军刀,几乎可以处理任何事情,但是很难找到一个好的命名。...相同的输入下,总是能产生相同的输出,而且,命名也变得容易得多。 如果你很难找到函数和方法的描述性名称,或者需要编写冗长的指令以便其他人可以使用,那请考虑这个建议,每个函数或方法只执行一个任务。...这样的话,回到之前的旧代码变得容易。当然,尝试新的编码方式是一件好事,它可以帮助我们找到更好的方法来开展工作。但是最好是不同的实验项目或练习上尝试不同的编码风格,而不是主要项目上进行。

720100
  • R数据科学|第十一章内容介绍

    使用forcats处理因子 因子 R 中用于处理分类变量。从历史上看,因子远比字符串容易处理。因此,R 基础包中的很多函数都自动将字符串转换为因子。...准备工作 使用forcats包来处理因子,这个包提供了能够处理因子的工具,其中还包括了处理因子的大量辅助函数。...创建因子时,将水平设置为unique(x),或者创建因子后再对其使用fct_inorder()函数,也可以达到这个目的: f1 <- factor(x1, levels = unique(x1))...默认情况下,ggplot2 会丢弃没有任何数据的那些水平,你可以使用以下代码来强制显示这些水平: ggplot(gss_cat, aes(race)) + geom_bar() + scale_x_discrete...修改因子水平 可以使用fct_recode()函数,它可以对每个水平进行修改或重新编码。该函数没有明确提及的水平保持原样,如果不小心修改了一个不存在的水平,那么它也会给出警告。

    61320

    「R」数据操作(七):dplyr 操作变量与汇总

    这些函数一个关键属性就是向量化的:它必须使用一组向量值作为输入,然后返回相同长度的数值作为输出。我们没有办法将所有的函数都列举出来,这里选择一些被频繁使用的函数。...= 排序rank 存在很多rank函数,但我们从min_rank()的使用开始,它可以实现最常见的rank(例如第一、第二、第三、第四),使用desc()进行辅助可以给最大值最小的rank。...= "HNL") 这代码聚焦于转换,而不是什么被转换,这代码容易阅读。你可以将这段代码当作命令式的语句:分组、然后汇总,然后过滤。对%>%理解的一种好的方式就是将它发音为”然后“。...幸运的是,所有的聚集函数都有na.rm参数,它可以计算之前移除缺失值。...这sum()与mean()变得非常有用,sum(x)可以计算x中TRUE的数目,mean()可以计算比例: # 多少航班5点前离开 not_cancelled %>% group_by(year

    2.6K20

    用好颜色,你就是UI设计师中最亮的仔~

    颜色和文字也可以相互辅助,并使他们更有力量。它可以没有任何文字的情况下传达出自己的感情。成为设计师手里的一大武器。这就是为什么UI设计领域里,颜色是关键的因素之一。...然而,现在渐变色已经越来越有潜力,合理的应用在设计中,反而可以为颜色的选择中加分。 ? 04 尝试干净的组合 无论什么组合中,颜色都应该感觉干净。...然而,更多的时候背景可以成为另一个活跃主题的要素,可以使作品看起来富有表现力。不要错过尝试的机会,也许这个选择是正确的。 ?...观察黑白模式下的作品,会更快的发现什么元素是引人注目。这不会减小颜色对设计的影响,相反能能好的发现无效的颜色组合,发现更多潜在问题,也可以设计师关注色盲用户的体验感。...08 可用性是关键要素 设计一个UI不仅仅是平面设计,设计UI也是为用户提供可以方便快捷而且生活更加幸福的产品的过程。

    43310

    如何写出优质干净代码

    现在,想象一下,那时如果没有编写干净代码,那么第一眼看到代码之后,该是有多糟糕和混乱。而且,也可以知道从当初离开的地方开始编码有多困难。...2.有利于团队新员工培训 编写干净代码的另一个好处与第一个好处是密切相关的,那就是可以新员工容易更快地使用代码。假设我们需要雇佣一个开发人员,那么要花多长时间才能理解代码并学会使用它呢?...3.一个函数或方法只执行一个任务 当开始编写代码时,使用的函数和方法看起来就像一把瑞士军刀,几乎可以处理任何事情,但是很难找到一个好的命名。...相同的输入下,总是能产生相同的输出,而且,命名也变得容易得多。 如果你很难找到函数和方法的描述性名称,或者需要编写冗长的指令以便其他人可以使用,那请考虑这个建议,每个函数或方法只执行一个任务。...这样的话,回到之前的旧代码变得容易。当然,尝试新的编码方式是一件好事,它可以帮助我们找到更好的方法来开展工作。但是最好是不同的实验项目或练习上尝试不同的编码风格,而不是主要项目上进行。

    75520

    「R」dplyr 列式计算

    这使 「dplyr」 容易使用(因为需要记住的函数更少),也使我们容易实现新的动词(因为我们只需要实现一个函数,而不是四个)。...令人失望的是,我们没有早点发现 across(),而是经历了几个错误的尝试(首先没有意识到这是一个常见的问题,然后是使用_each()函数,最后是使用_if()/_at()/_all()函数)。...这是由 base R 提供的,但它并没有很好的文档,我们花了一段时间才发现它是有用的,而不仅仅是理论上的好奇。 我们可以使用数据框汇总函数返回多列。...我们可以使用没有外部名称作为将数据框列解包为单独列的约定。 你如何转移已经存在的代码?...现在,across() 等价于 all_vars(),然而没有 any_vars() 的直接替代品,不过你可以自己创建一个: df <- tibble(x = c("a", "b"), y = c(1,

    2.4K10

    啃完这3本书,你就是大神!

    一个有经验的软件工程师知道什么情况下使用合适的算法,以及预期的性能。 如果你不想读一本厚书,而喜欢听课,Coursera上有一门由该书作者提供的完全免费的课程。...《代码大全》Steve McConnell 当我读完这本书的时候,我很惊讶为什么到现在还没有人向我解释这些基本但至关重要的事情。你可能会问,它们是什么?我给你们举几个例子。...这意味着数据通过函数进行转换,这些函数可以组成许多层。 但是,初级开发人员很难理解如何构建无状态序列。即使对于从未使用过函数式编程的有经验的开发人员来说,编写高效且可维护的函数代码也是一个挑战。...这可以通过通常的声明方式完成,但这需要编写一些循环并保存中间状态。以函数的方式编写代码可以使其简单、清晰和无状态。除此之外,重要的是要认识到函数的顺序可以性能中发挥很大的作用。...看一下上面的示例,当前面调用filter()方法时,后面的函数已经较小的数据集上操作了。 这本书解释了最流行的函数,并教授如何有效地应用它们,以及如何以函数的方式编写干净代码

    66131

    R机器学习的Tidymodel流水线编程

    Tidymodels: tidy machine learning in R 处理数据时,有简洁的工具包,tidyverse应运而生,极大地简化数据处理流程,数据处理变得简洁,清晰。...但是处理完数据后,需要对数据进行建模分析,预测与拟合,这个过程随着模型的不同而变的多元化,尤其是机器学习应用。加速了模型构建的流程化与简洁化。 Caret的出现,此项工作变得简洁明了。...tidymodels的出现,将这些机器学习的包整合到一接口,而不是重新开发机器学习的包。准确的说,tidymodels提供了一组用于定义模型的函数和参数。然后根据请求的建模包对模型进行拟合。...预测 针对arsnip的predict()函数可以返回tibble数据格式。默认情况下,预测变量称为.pred_class。...模型评估 使用metrics()函数来衡量模型的性能。它将自动选择适合给定模型类型的指标。 该函数需要一个包含实际结果(真相)和模型预测值(估计值)的tibble数据。

    52820

    2018-07-19 如何重构“箭头型”代码如何重构“箭头型”代码

    抽取成函数 微博上有些人说,continue 语句破坏了阅读代码的通畅,我觉得他们一定没有好好读这里面的代码,其实,我们可以看到,所有的 if 语句都是判断是否出错的情况,所以,维护代码的时候,你可以完全不理会这些...if 语句,因为都是出错处理的,而剩下的代码都是正常的功能代码,反而容易阅读了。...所以,更为高组的语言中,使用 try-catch 异常捕捉的方式,会代码更为易读一些。...写代码时,代码的运行中的控制状态或业务状态是会你的代码流程变得混乱的一个重要原因,重构“箭头型”代码一个很重要的工作就是重新梳理和描述这些状态的变迁关系。...4)对于多个状态的判断和组合,如果复杂了,可以使用“组合状态表”,或是状态机加Observer的状态订阅的设计模式。这样的代码即解了耦,也干净简单,同样有很强的扩展性。

    98360

    R tips:使用!!来增加dplyr的可操作性

    R中代码的运行过程 介绍!!运算符之前,有必要先了解一下R中的代码是如何运行的。 R console中输入一个代码,R就会返回代码的结果。...这个瞬间的过程其实需要两个步骤和三个阶段: 代码 --解析-> 语句 --执行-> 结果 输入的是文本代码(code),R会首先解析成语句(R称之为expression),expressionR中是一个树状结构...上述过程中,baseR中的函数parse可以进行解析工作,函数eval可以进行执行工作。 一个代码R console中是直接运行到结束的,如果想要获得其中间态:语句,可以使用expr函数来捕获它。...为了可以它执行,我们可以需要告诉dplyr,先对group_var求值,获得真正的分组名:gear,使用gear进行后续操作,这个先求值的操作可以通过!!运算符来完成。...,但是实际使用时,可能倾向于将四个新变量放置到同一个数据框中,可以如下操作: ### 添加新列的函数 mutate_news <- function(.data, .vars) { data <-

    2.4K31

    经验之谈:代码该怎样写才能干净整洁

    干净代码应该是优雅的:干净代码应该易于阅读,阅读干净代码你感到愉悦,它应该你认为「我确实知道这里的代码在做什么」。...你一眼就可以看出函数中有一个「if/else」语句 大括号和一致的缩进代码块开始和结束的位置一目了然 大括号是一致的,请注意函数和 if 代码块的左大括号是和函数名和 if 关键字放在同一行上的 反面例子...,我谈到了你的代码变得容易阅读是多么的重要。...那么,如果我们对代码进行重构,变得专一呢?...实际上会你的代码变得更难以阅读和维护。如果开发者必须不断地许多文件/方法之间进行跳转才能进行简单的变更,那这样也会影响生产效率。 要有编写干净代码的意识,但是不要在项目的早期过多地考虑它。

    67330

    「R」用purrr实现迭代

    一起复习一下吧~ 函数有3个好处: 容易看清代码意图 容易对需求变化做出反应(改变) 容易减少程序bug 除了函数,减少重复代码的另一种工具是迭代,它的作用在于可以对多个输入执行同一种处理,比如对多个列或多个数据集进行同样的操作...因为R是一门函数式编程语言,我们可以先将for循环包装在函数中,然后再调用函数,而不是使用for循环,因此for循环R中不像在其他编程语言中那么重要。...哎呀,我们又复制粘贴了2次代码,因此是不是该思考下如何扩展一个代码它同时发挥几个函数的功能呢?这段代码的大部分是一个for循环,而且如果不仔细很难看出3个函数有什么差别。...接下来我们将学习和使用purrr包,它提供的函数可以替代很多常见的for循环应用。R基础包中的apply应用函数族也可以完成类似的任务,但purrr包的函数一致,也容易学习。...我们使用tribble()参数配对容易: sim = tibble::tribble( ~f, ~params, "runif", list(min = -1, max = 1),

    4.8K20

    半监督学习与PyTorch和SESEMI

    开发机器学习解决方案时,需要清除的最大障碍一直是数据。像ImageNet和COCO这样的大规模、干净、完全注释的数据集并不容易获得,特别是对于小众任务。...事实证明,这些技术比你想象的容易理解,你可以立即开始应用它们。 Self-Supervised学习 我们深入研究之前,让我们先定义这些术语的含义。...基本上,我们创建了一个“人工”监督学习任务,它具有以下特性: 它鼓励网络学习关于数据的语义上有用的信息。 它的标签可以从数据扩充中派生出来。...半监督学习技术通常在两个任务上交替进行训练,首先是应用于有标记数据的标准监督任务,然后是利用无标记数据和某种数据扩充的辅助任务。一个这样的辅助任务可以是预测图像旋转,就像我们之前讨论的那样。...然后,通过明确的监督或惩罚对这些变化的敏感性的损失函数的术语,鼓励你的网络对非语义的增强变得有弹性。通过利用数据增强,实际上可以通过自我监督将任何监督学习任务变成半监督任务。

    1.2K50

    深入探索Scala的Option

    REA的Scala程序员Ken ScamblerYOW!大会上有一个很棒的演讲2 Year of Real World FP at REA。...我所谓的承担责任,并不是事后追究,而是每次写完代码后都要再三推敲,力求每行代码都是干净利落,没有歧义,没有潜在的错误。 然而,针对以上代码,要怎样才能保证程序调用的健壮性呢?...这就需要在parseLocation函数体中加入一堆if语句,短短的六行代码可能会膨胀一倍,而分支语句也会程序的逻辑变得凌乱,正常逻辑与异常逻辑可能会像麻花一样扭在一起。...当然,我们可以运用防御式编程,将可能的错误防御正常逻辑代码之前,但它带来的阅读体验却会非常糟糕。 即使针对这些错误进行判断,仍然无法解决的一个问题是当对象真的出现错误时,函数实现究竟该如何处理?...然而,多数时候我们应该使用定义Option中的函数,这些函数可以代码变得简单。

    1.1K70

    代码减肥

    测试代码质量的唯一方式:别人看你代码时说 f * k 的次数。 代码质量与其整洁度成正比。干净代码,既质量上较为可靠,也为后期维护、升级奠定了良好基础。...很明显你们方法会产生冲突,遇到这类问题我们可以用 ES2015/ES6 的语法来对 Array 进行扩展。 比起命名式我喜欢函数式编程 函数式变编程可以代码的逻辑清晰更优雅,方便测试。...A:为了代码简洁易读,如果你的函数中出现了条件判断,那么说明你的函数不止干了一件事情,违反了函数单一原则。...使用私有变量 可以用闭包来创建私有变量 4、类 使用 class ES2015/ES6 之前,没有类的语法,只能用构造函数的方式模拟类,可读性非常差。...链式调用 这种模式相当有用,可以很多库中发现它的身影,比如 jQuery、Lodash 等。它你的代码简洁优雅。实现起来也非常简单,类的方法最后返回 this 可以了。

    68920

    dpois函数_frequency函数

    = "HNL") 这侧重于转换,而不是转换的内容,这使代码容易阅读。 可以将其作为一系列命令性语句阅读:组,然后汇总,然后过滤。 正如本文所述,阅读代码时%>%意味着“然后”。...幸运的是,所有聚合函数都有一个na.rm参数,该参数计算之前删除缺失值: flights %>% group_by(year, month, day) %>% summarise(mean...这个故事实际上有点微妙。...查看此类图时,过滤掉具有最少观察数的组通常很有用,因此可以看到更多的模式,而不是最小组中的极端变化。这就是下面的代码所做的,并向您展示了将ggplot2集成到dplyr流中的便捷模式。...均值是除以长度的总和;中位数是一个值,其中50%的x高于它,50%低于它。 将聚合与逻辑子集相结合有时很有用。我们还没有谈到这种子集化,但你会在子集中了解更多。

    1.8K10

    数据处理第2节:将列转换为正确的形状

    转换列:基础部分 您可以使用mutate()函数创建新列。 mutate中的选项几乎是无穷无尽的:你可以对普通向量做任何事情,可以mutate()函数内完成。...如果我想在几分钟内完成,我可以使用mutate_at()并将包含列的所有'sleep'包装在vars()中。 其次,我飞行中创建一个函数,将每个值乘以60。...示例代码显示,在这种情况下,所有sleep列都已更改为分钟,但awake没有。...不幸的是,似乎没有简单的方法case_when()返回一个有序的因子,所以你需要自己做,之后使用forcats :: fct_relevel(),或者只是一个因子()函数。...gather函数需要您为新的描述性列指定名称(“key”),并为值列指定另一个名称(“value”)。 最后需要取消选择您不想收集的列。 示例代码中,我取消选择列name。

    8.1K30
    领券