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。 |