2015-11-06 77 views
8

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

这将做到这一点!井井有条。 – Benjamin

回答

15

为了构建的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. 
相关问题