有没有办法“通过列表管道”?
Posted
技术标签:
【中文标题】有没有办法“通过列表管道”?【英文标题】:Is there a way to `pipe through a list'? 【发布时间】:2016-02-08 01:28:39 【问题描述】:ggplot2
包中我从未真正充分利用过的一个非常酷的功能是将层列表添加到绘图中。有趣的是,我可以将图层列表作为参数传递给函数并将它们添加到绘图中。然后我可以获得所需的绘图外观,而不必从函数中返回绘图(这是否是一个好主意是另一回事,但这是可能的)。
library(ggplot2)
x <- ggplot(mtcars,
aes(x = qsec,
y = mpg))
layers <- list(geom_point(),
geom_line(),
xlab("Quarter Mile Time"),
ylab("Fuel Efficiency"))
x + layers
有没有办法用管道做到这一点?类似于:
#* Obviously isn't going to work
library(dplyr)
action <- list(group_by(am, gear),
summarise(mean = mean(mpg),
sd = sd(mpg)))
mtcars %>% action
【问题讨论】:
这样就行了!非常整洁。 【参考方案1】:要构建一系列 magrittr 步骤,请从 .
开始
action = . %>% group_by(am, gear) %>% summarise(mean = mean(mpg), sd = sd(mpg))
那么就可以在OP里想象的那样使用了:
mtcars %>% action
就像list
,我们可以子集查看每个步骤:
action[[1]]
# function (.)
# group_by(., am, gear)
要查看所有步骤,请使用functions(action)
或只需输入名称:
action
# Functional sequence with the following components:
#
# 1. group_by(., am, gear)
# 2. summarise(., mean = mean(mpg), sd = sd(mpg))
#
# Use 'functions' to extract the individual functions.
【讨论】:
以上是关于有没有办法“通过列表管道”?的主要内容,如果未能解决你的问题,请参考以下文章