2015-11-06 24 views
8

Gerçekten hiç istismar etmediğim ggplot2 paketinden gerçekten harika bir özellik, katmanlara bir arsa listesi eklenmesiydi. Bununla ilgili eğlenceli olan şey, katmanların bir listesini bir işleve karşı argüman olarak iletebilmem ve onları arsaya eklemem gerektiğiydi. Ardından, arsa işlevini zorunlu olarak geri döndürmeden arsanın istenen görüntüsünü elde edebilirim (bunun iyi bir fikir olup olmadığı başka bir meseledir, fakat mümkün olmuştur).Bir listeden boru yaymanın bir yolu var mı?

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 

Bunu borularla yapmak için bir yol var mı? Bir şey benzer: Bir list gibi

mtcars %>% action 

:

#* Obviously isn't going to work 
library(dplyr) 
action <- list(group_by(am, gear), 
       summarise(mean = mean(mpg), 
         sd = sd(mpg))) 

mtcars %>% action 
+1

! Çok temiz. – Benjamin

cevap

15

magrittr bir dizi aşama inşa etmek için, OP hayal gibi kullanılabilir Sonra .

action = . %>% group_by(am, gear) %>% summarise(mean = mean(mpg), sd = sd(mpg)) 

ile başlar Her bir adımı görmek için alt kümeyi inceleyebiliriz:

action[[1]] 
# function (.) 
# group_by(., am, gear) 

, tüm adımlar gözden functions(action) kullanmak ya da sadece adını yazın: yapacak

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.