14

magrittr 的 Github 开发版包含一些很酷的管道新功能,但我并没有完全理解%>%和之间的区别%,%。这只是形式%>%的价值和%,%功能,还是有一些特定的特点?

4

1 回答 1

22

正常的管道操作员是%>%. 你可以用它%,%来创建一个可重用的管道,一个没有数据的管道。然后稍后您可以将同一管道用于各种数据集。这是一个例子。

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 方式创建一个函数,即 ie top_total <- function(...) ...,但这%,%是一种更简洁的方式。

于 2014-08-08T21:01:53.717 回答