【问题标题】: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

【问题讨论】:

  • 这样就行了!非常整洁。

标签: r ggplot2 dplyr magrittr


【解决方案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. 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-19
    • 2021-08-04
    • 2017-09-28
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多