有没有办法使用 magrittr pipe operator %>% 来获得多个输出?

Is there a way to use the magrittr pipe operator %>% to get multiple outputs?

我想知道是否有一种方法可以使用 R 中的 magrittr 包从单个输入实现多个输出,这样您就可以实现以下输出:

rnorm(30) %>%
mean

rnorm(30) %>%
median

无需调用 rnorm(30) 两次。

只需将它们放在一个向量中即可:

rnorm(30) %>% { c(mean = mean(.), median = median(.)) }
#       mean     median 
# -0.2477345 -0.1126395 

大括号是这里的关键。如果没有它们,您将得到 rnorm(30) 向量,其平均值和中值连接到最后。

另一种选择是编写您自己的函数。

f <- function(x) c(mean = mean(x), median = median(x))
rnorm(30) %>% f
#        mean      median 
# -0.12908354 -0.06667819