作为R语言基础之一的 %>% 应用非常广泛,但是我却一直没有系统地学习,实在不应该,今天研究记述一下。
什么是%>%
%>% 作为一种管道符,意思是 %>% 把左边的输出传递给右边的函数作为输入。最早来自于R包magrittr,magrittr包是一个高效的专业管道操作工具包,主要定义了4个管道操作符,分另是%>% 向右操作符(forward-pipe operator), %T>% 向左操作符(tee operator), %$% 解释操作符(exposition pipe-operator) 和 %<>% 复合赋值操作符(compound assignment pipe-operator)。其中%>%最为常用,有机会再聊其它三个,今天只说%>%
R包 dplyr 调用了 magrittr 包,这就是为什么很多用到 %>% 时都会调用 dplyr 的原因。
怎么用%>%
%>%的使用异常简单,就是左边传递给右边,近似shell中的“ | ” ,需要注意要与shell的输出重定向“ > ”相区分,话不多说直接上示例:
library(dplyr) #调用依赖
#分步法示例
data <- rep(4,4) #定义输入数据四个四
unidata <- unique(data) #进行去重
unidata
[1] 4
#管道符使用示例
pipeunidata <- rep(4,4) %>% unique() #输入数据去重
# 可以理解为 rep(4,4)的输出传递给了unique(),然后去重之后结果赋值为 pipeunidata
pipeunidata #可见结果与分步法一致
[1] 4
可以很明显的看出使用管道符之后,步骤被简化了,一步就得到了去重之后的数据,这就引出了管道符的价值。
为啥用%>%
R语言的每次赋值都会占用相应的内存,管道符的使用可以有效减少赋值以减少内存占用。另外,代码的简化也会带来相应的美感和可读性。
网友评论