我正在关注这个例子,server.R 文件 在这里。
我计划做一个类似的过滤器,但不知道做什么%>%。
%>%
# Apply filters m <- all_movies %>% filter( Reviews >= reviews, Oscars >= oscars, Year >= minyear, Year <= maxyear, BoxOffice >= minboxoffice, BoxOffice <= maxboxoffice ) %>% arrange(Oscars)
中缀运算符%>%不是基础 R 的一部分,但实际上由包magrittr( CRANdplyr ) 定义并且被( CRAN ) 大量使用。
magrittr
dplyr
它像烟斗一样工作,因此参考了马格利特的名画《图像的背叛》。
该函数所做的是将运算符的左侧传递给运算符右侧的第一个参数。在以下示例中,数据帧iris被传递给head():
iris
head()
library(magrittr) iris %>% head() Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa
因此,iris %>% head()等价于head(iris)。
iris %>% head()
head(iris)
通常,%>%多次调用以将函数“链接”在一起,从而实现与嵌套相同的结果。例如,在下面的链中,iris传递给head(),然后将结果传递给summary()。
summary()
iris %>% head() %>% summary()
因此iris %>% head() %>% summary()等价于summary(head(iris))。有些人更喜欢链接而不是嵌套,因为应用的函数可以从左到右读取,而不是从内向外读取。
summary(head(iris))