您要打印的文件是:R中的管道符-magrittr

R中的管道符-magrittr

作者:advancer    转贴自:https://zhuanlan.zhihu.com/p/59770889    点击数:34


R中的管道符-magrittr
sdjsdjsdj
sdjsdjsdj
一个没什么前途(钱途)的穷学生,咨询请值乎勿私信
​关注他
45 人赞同了该文章
我一直不舍得完全从R转到python有很多原因,但是其中最舍不得的两个就是ggplot2和magritter,完全使我的R语言代码变得高效而且简介,今天就来详细介绍一下R中的pipe operator的包-magrittr

关于magrittr的包描述是这样的:A Forward-Pipe Operator for R


安装:
# 直接从tidyverse中使用:
install.packages(tidyverse)

# 或者直接安装:
install.packages(magrittr)

# 从GitHub下载开发版本:
# install.packages(devtools)
devtools::install_github(tidyverse/magrittr)
使用方法:
1.基本用法

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)
如果数据作为函数的第一个参数的话,是不需要placeholder的,但是如果是第二或者更后面的参数,就需要使用 . 作为占位符。

2.构建函数

f <- . %>% cos %>% sin
等价为
f <- function(.) sin(cos(.))
3.%>%, %$%和%<>%的用法

%>%是最常用的一种前向管道符。

%<>%是表示将变量传入函数,得到的结果返回给原来的变量

iris %<>% na.omit() 等价于 iris<-na.omit(iris)
%$%是使用变量的name来表示该变量下name的数值

df<-data.frame(a=c(1,2,3), b=c(4,5,6))

cor(df$a, df$b) 等价于 df %$% cor(a,b)
4.其余函数的解释:

extract               `[`                   iris['Sepal.Length'] 等价于raise_to_powerly_byextract(SepSepal.等价于等价于LengthSepal.LengthSepal.Lengthal.Length)
extract2               `[[`                  iris$Sepal.Length 等价于 iris %>% extract2('Sepal.Length')
inset                       `[<-`               iris['aa']=1 等价于 iris %>% inset(aa,value=1)
inset2               `[[<-`              iris['aa']=1 等价于 iris %>% inset2(aa,value=1)
use_series               `$`                  iris$Sepal.Length 等价于 iris %>% use_series(Sepal.Length)
add                       `+`                  iris %>% use_series(Sepal.Length) %>% add(1)
subtract               `-`                  iris %>% use_series(Sepal.Length) %>% subtract(1)
multiply_by         `*`                  iris %>% use_series(Sepal.Length) %>% multiply_by(1)
raise_to_power       `^`                  iris %>% use_series(Sepal.Length) %>% raise_to_power(2)
multiply_by_matrix     `%*%`           
divide_by               `/`
divide_by_int            `%/%`
mod                       `%%`
is_in                       `%in%`
and                       `&`
or                       `|`
equals               `==`
is_greater_than       `>`
is_weakly_greater_than `>=`
is_less_than       `<`
is_weakly_less_than `<=`
not (`n'est pas`)       `!`
set_colnames       `colnames<-`     iris %>% set_colnames(c('a','b','c','d'....))
set_rownames       `rownames<-`     iris %>% set_rownames(c('a','b','c','d'....))
set_names               `names<-`
在文档里面解释了常用的几种函数和方法,具体的内容大家可以参照如下链接:

Abstract
​cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html

tidyverse/magrittr
​github.com/tidyverse/magrittr

如果对有些函数还是不知道怎么使用的话,强烈建议大家去R里面用一些示例数据去运行一下,这样对于R数据包有更多的认识。

最后说一下我正在做的一个GitHub项目-Road2R,是包含了所有我使用过的包和资料和博客的一个集合,我会不断完善,同时也希望大家可以多多pull requests。