R语言
R语言实操记录——管道(|>, %>%, %T>%, %$% 和 %<>%)
文章目录
一、R自带的管道( |> )
在R4.1以上版本加入了原生管道操作符"|>",如同Linux中的管道作用一致,将左侧的输出结果传递给右侧命令。
二、R包magrittr提供的管道( %>%, %T>%, %$% 和 %<>% )
R包magrittr提供的管道功能就显得丰富了很多。
运用下列符号前需要先调用magrittr包
install.packages("magrittr")
library(magrittr)
2.1、%>% (向右操作符,forward-pipe operator)
- 定义:把左侧的数据或表达式,传递给右侧的函数调用或表达式进行运行,可以连续操作。
2.2、%T>%(向左操作符,tee operator)
- 定义:功能和 %>% 基本是一样的,只不过它是把左边的值做为传递的值,而不是这一步计算得到的值。
- 使用场景:比如,你在数据处理的中间过程,需要打印输出或图片输出,这时整个过程就会被中断,用向左操作符,就可以解决这样的问题。
2.3、%$% (解释操作符,exposition pipe-operator)
- 定义:%$%的作用是把左侧数据的属性名传给右侧,让右侧的调用函数直接通过名字,就可以获取左侧的数据。比如,我们获得一个data.frame类型的数据集,通过使用 ,在右侧的函数中可以直接使用列名操作数据。
- 示例:
data.frame(x=1:10,y=rnorm(10),z=letters[1:10]) %$% .[x>5,]
# 等同于
df<-data.frame(x=1:10,y=rnorm(10),z=letters[1:10])
df[df$x>5,]
- 实现原理如下图所示,使用%$%把左侧的程序的数据集A传递右侧程序的B函数,同时传递数据集A的属性名,作为B函数的内部变量方便对A数据集进行处理,最后完成数据计算。
2.4、%<>% (复合赋值操作符,compound assignment pipe-operator)
- 定义:%<>%复合赋值操作符, 功能与 %>% 基本是一样的,多了一项额外的操作,就是把结果写回到最左侧的对象(覆盖原来的值)。
- 使用场景:比如,我们需要对一个数据集进行排序,那么需要获得排序的结果,用%<>%就是非常方便的。