马格里特
概述
magrittr包提供了一组操作符,这些操作符使您的代码可读性更强:
- 从左到右结构化数据操作序列(与此相反从内到外),
- 避免嵌套函数调用,
- 最小化对局部变量和函数定义的需要,和
- 很容易在序列中的任意位置添加步骤操作。
操作员将其左侧值向前传递到出现在右侧的表达式,即可以替换f(x)
具有x%>%f()
,其中%>%
是(主)管道操作员。当耦合几个用管道操作符调用函数,好处会更多显而易见。考虑这个伪示例:
数据(_D)<-
读取.csv(“/path/to/data/file.csv”)%>%
子集(变量a>x)%>%
转型(变量c=变量a/变量b)%>%
头(100)
执行四个操作以获得所需的数据集,以及它们是按照自然的顺序写的:与执行的顺序相同。此外,不需要临时变量。如果还有另一个手术需要,添加到操作序列中很简单在任何需要的地方。
如果你是马格里特的新手,最好的出发点是管道章节以R表示数据科学。
安装
#获取magrittr最简单的方法是安装整个tidyverse:
安装程序包(“tidyverse”)
#或者,只安装magrittr:
安装程序包(“马格里特”)
#或者GitHub的开发版本:
#install.packages(“devtools”)
开发工具::安装github(“tidyverse/magrittr”)
用法
基本管道
x%>%f
等于f(x)
x%>%f(y)
等于f(x,y)
x%>%f%>%g%>%h
等于h(g(f(x)))
这里,“等价物”在技术上并不准确:评估是非标准,左侧在传递到之前进行评估右侧表达式。然而,在大多数情况下,这没有实际意义。
参数占位符
x%>%f(y,.)
等于f(y,x)
x%>%f(y,z=.)
等于f(y,z=x)
重新使用属性占位符
在右侧表达式。但是,当占位符仅出现时在嵌套表达式中,magrittr仍将应用第一个参数规则。原因是在大多数情况下,这会产生更干净的代码。
x%>%f(y=nrow(.),z=ncol(.))
等于f(x,y=nrow(x),z=ncol(x))
可以通过将右侧包含在支撑:
x%>%{f(y=nrow(.),z=ncol(.))}
等于f(y=nrow(x),z=ncol(x))
建筑(一元)功能
以开头的任何管道.
将返回函数它可以稍后用于将管道应用于值。建筑物因此,magrittr中的函数类似于构建其他值。
(f)<-.%>%余弦%>%罪
#等于
(f)<- 功能(.)罪(余弦(.))
管道外露变量
许多函数接受数据参数,例如勒姆
和骨料
,这在数据所在的管道中非常有用首先处理,然后传递给这样的函数。还有没有数据参数的函数,对于公开数据中的变量。这是用%$%
操作员:
虹膜%>%
子集(分隔长度> 意思是(萼片长度)%$%
科尔(隔板长度、隔板宽度)
#> [1] 0.3361992
数据帧(z(z)= rnorm公司(100))%$%
ts.槽(z)
行为准则
请注意,magrittr项目发布时带有贡献者行为准则。通过参与此项目,您同意遵守根据其条款。