r - magrittr 中的 %>% 和 %,% 有什么区别?

标签 r piping magrittr

magrittr 的 Github 开发版本包括一些很酷的管道新功能,但我没有完全理解 %>% 之间的区别。和 %,% .这只是正式的 %>%对于值(value)和 %,%对于功能,还是有一些特定的特性?

最佳答案

正常的管道运算符(operator)是 %>% .您可以使用 %,%创建一个可重用的管道,一个没有数据的管道。然后,您可以对各种数据集使用相同的管道。这是一个例子。

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(...) ... ,但是 %,%是一种更简洁的方式。

关于r - magrittr 中的 %>% 和 %,% 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25211465/

相关文章:

r - 在数据框创建的循环中,使用 data.table 包中的 set() 将值从一个数据框复制并粘贴到另一个数据框

R Shiny 带传单 : create a modal window on clicking an icon

r - 在 r 中的 unique() 函数中使用管道不起作用

r - magrittr 包中的管道不适用于函数 rm()

r - 如何在R中与%<>%(来自magrittr包)相乘?

regex - R中的模式替换

RPostgreSQL 和 DBI : "operator does not exist: uuid = text"

java - 使用 Java 在线程之间传输数据

bash - 在 bash 中同时传输 stdout 和 stderr?

inheritance - 管道或组合的类型推断失败,正常函数调用成功