2017-08-12 9 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()) 

しかし、私は1つの関数呼び出しでどのように異なるテーマでプロットすることができますか?私はgplot2を試しながら は、私は警告メッセージをし、任意のプロットなしGOT)(、(gplot1を試してみました)、何も得なかっ:

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

'(I themes1中)プリント(gplot1(I))' – baptiste

+0

のために私が最初にマルコSandriの答えを読みます私はあなたのコメントを気づいただけで、あなたのコードはmよりも簡潔だと思います。(私は1:1の長さ(ps))のprint(ps [[i]])あなた、両方のおかげで、お元気ですか! – ycc

答えて

0

あなたはlapplyを使用することができます。

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

enter image description here

ps[[2]] 

enter image description here

関連する問題