What is the difference between %>% and %,% in magrittr?

前端 未结 1 1358
执念已碎
执念已碎 2021-02-04 07:29

Github developmental version of magrittr includes some cool new function for piping but I do not exactly catch de difference between %>% and %,%. Is

1条回答
  •  鱼传尺愫
    2021-02-04 07:50

    The normal piping operator is %>%. You can use %,% to create a reusable pipe, a pipe without data. Then later you can use the same pipe with various data sets. Here is an example.

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

    Suppose you want to calculate the top 5 baseball players, according to total hits. Then you can do something like this (taken from the 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
    

    So far so good. Now let's assume that you have several data sets in the same format as Batting, so you could just reuse the same pipe again. %,% helps you create, save and reuse the pipe:

    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
    

    Of course you could also create a function the regular R way, i.e. top_total <- function(...) ..., but %,% is a more concise way.

    0 讨论(0)
提交回复
热议问题