magrittr中%>%和%,%之间有什么区别?

时间:2014-08-08 20:07:52

标签: r piping magrittr

Gritub的magrittr开发版包含了一些很酷的管道新功能,但我并没有完全理解%>%%,%之间的区别。这只是正式的%>%表示值和%,%表示函数,还是有一些特殊的特性?

1 个答案:

答案 0 :(得分:21)

普通管道操作员为%>%。您可以使用%,%创建可重用的管道,没有数据的管道。然后,您可以使用与各种数据集相同的管道。这是一个例子。

library(magrittr)
library(dplyr)
library(Lahman)

假设您想根据总命中数计算前5名棒球运动员。然后你可以做这样的事情(取自magrittr README):

Batting %>%
   group_by(playerID) %>%
   summarise(total = sum(G)) %>%
   arrange(desc(total)) %>%
   head(5)
# Source: local data frame [5 x 2]
# 
#    playerID total
# 1  rosepe01  3562
# 2 yastrca01  3308
# 3 aaronha01  3298
# 4 henderi01  3081
# 5  cobbty01  3035

到目前为止一切顺利。现在让我们假设您有几个与Batting格式相同的数据集,因此您可以再次重用相同的管道。 %,%可帮助您创建,保存和重用管道:

top_total <- group_by(playerID) %,%
   summarise(total = sum(G)) %,%
   arrange(desc(total)) %,%
   head(5)

top_total(Batting)
# Source: local data frame [5 x 2]
# 
#    playerID total
# 1  rosepe01  3562
# 2 yastrca01  3308
# 3 aaronha01  3298
# 4 henderi01  3081
# 5  cobbty01  3035

当然你也可以用常规的R方式创建一个函数,即top_total <- function(...) ...,但%,%是一种更简洁的方式。