2017-08-12 35 views
0

我把傳遞函數的一些文章作爲參數,我希望我可以用ggplot2生成不同主題的地塊。以下2個函數可以正確繪圖:如何通過在ggplot2中傳遞主題作爲函數的參數來繪製不同的主題?

# plot data  
dat <- diamonds[sample(1:nrow(diamonds), 5000), ] 

gplot1 <- function(FUN = theme_bw) { 
    ggplot(dat, aes(carat, price))+ 
    geom_point(aes(colour = color))+ 
    FUN() 
} 
gplot1(theme_gray) 

gplot2 <- function(FUN) { 
    theme_set(FUN) 
    ggplot(dat, aes(carat, price))+ 
    geom_point(aes(colour = color)) 
} 
gplot2(theme_bw()) 

但是我怎麼能通過一個函數調用繪製不同的主題? 我試圖gplot1()和什麼也沒得到,而我試圖gplot2()我得到警告消息,沒有任何劇情:

themes1 <- c(theme_bw, theme_gray) 
for(i in themes1) gplot1(i) 
# nothing 

themes2 <- c(theme_bw(), theme_gray()) 
for(i in themes2) gplot2(i) 
# warning messages and without any plot 

誰能告訴我嗎?非常感謝!

+0

'的(我在themes1)打印(gplot1(I))' – baptiste

+0

我第一次讀到馬可·桑德里的答案,我試過「for(in 1:length(ps))print(ps [[i]])」並且得到我需要的,然後我只注意到你的評論,我認爲你的代碼比m更簡潔恩,非常感謝你! – ycc

回答

0

您可以使用lapply

ps <- lapply(themes1, gplot1) 
ps[[1]] 

enter image description here

ps[[2]] 

enter image description here

相關問題