R中的管道操作符%>%

作者: 生信编程日常 | 来源:发表于2020-01-16 20:51 被阅读0次

管道是一种强大的工具,可以清楚地表示由多个操作组成的一个操作序列。管道%>% 来自于magrittr 包。因为tidyverse 中的包会自动加载%>%,所以一般我们不需要自己加载这个包。

library(magrittr)

有时候我们想实现某个功能,但是中间会有好几个步骤,产生不少无关变量。比如R数据科学中举的一个简单易懂的例子:

构建一个小兔子的对象:

foo_foo <- little_bunny()

兔子需要完成三个动作:

foo_foo_1 <- hop(foo_foo, through = forest)
foo_foo_2 <- scoop(foo_foo_1, up = field_mice)
foo_foo_3 <- bop(foo_foo_2, on = head)

在这个例子中,就产生了没有什么实际意义的中间变量,还必须用数字区分。这样很容易让人混淆,产生错误。

如果这样写:

foo_foo <- hop(foo_foo, through = forest)
foo_foo <- scoop(foo_foo, up = field_mice)
foo_foo <- bop(foo_foo, on = head)

每次都会覆盖掉以前的变量,但是这样如果出错,那么就必须重新跑。

有人可能也许会将函数组合起来:

bop(
scoop(
hop(foo_foo, through = forest),
up = field_mice
),
on = head
)

不过这样看起来真的累。

最后使用管道:

foo_foo %>%
hop(through = forest) %>%
scoop(up = field_mouse) %>%
bop(on = head)

管道对于一段比较短的线性操作序列是非常好使的,不过当步骤比较长(比如超过十个),或者有多个输入输出等时候,最好不要用管道。

举个简单小例子:

iris$Petal.Length %>%  `+` (10) %>% plot(col = 'steelblue', pch = 4)

取出来iris的Petal.Length一列,并+10,最后画图点图。

相关文章

  • R中的管道操作符%>%

    管道是一种强大的工具,可以清楚地表示由多个操作组成的一个操作序列。管道%>% 来自于magrittr 包。因为ti...

  • Babel 7.5新特性之动态引入和F#管道

    一、目录 F#管道操作符 动态导入 二、F#管道操作符 管道操作符提议还在第一阶段的开发中,同时也意味着其规范还在...

  • 小洁详解《R数据科学》--第十三章 管道操作

    1.管道操作符:%>% tidyverse的每个包都会自动加载管道操作符。但他是属于magrittr包,这个包中还...

  • 【tidyverse】part4:编程

    管道操作符magrittr包 pipes:管道操作符介绍 管道操作符用%>%来表示,可以使代码更加简洁并且减少写代...

  • 【mongoDB查询进阶】聚合管道(二) -- 阶段操作符

    上篇最后说到管道操作符,本篇文章将详细说一下管道操作符。 mongoDB查询进阶--聚合管道(一)回顾 什么是管道...

  • 管道命令

    参考linux shell 管道命令(pipe)使用及与shell重定向区别、管道命令 管道命令操作符是:”|”,...

  • | 管道命令

    管道命令在Linux中十分有用,管道命令操作符是“|”,它能将经由前一个命令输出的标准输出,作为管道后一个命令的标...

  • Linux管道命令

    Linux系统中管道命令是linux系统的一个强大之处。 管道命令操作符是:”|”,它只能处理经由前面一个指令传出...

  • MongoDB聚合管道——表达式操作(转)

    表达式操作符(Expression Operators) 表达式操作符主要用于在管道中构建表达式时使用,使用类似于...

  • MongoDB 字符串截取 $substr

    $substr,$substrBytes,$substrCP是aggregate的管道操作符,$substr在版本...

网友评论

    本文标题:R中的管道操作符%>%

    本文链接:https://www.haomeiwen.com/subject/dxrqzctx.html