2015-07-20 5 views
0

Этот вопрос связан с этим один здесь:вызова grid.arrange в списке ggplots

Related post

Мой нынешний вопрос: В моем коде я создать список ggplots в списке по телефону lapply , В первую очередь я использую lapply, потому что я выполняю довольно большое количество похожих ggplots, и было бы слишком громоздким, чтобы генерировать каждый ggplots вручную. как я могу обобщить свой код?

p <- qplot(rnorm(30)) 

plist <- lapply(c(1:10),FUN=function(x){ 

    qplot(rnorm(30)) 

}) 

#works 
year.plots <- list(p,p) 
do.call(grid.arrange, c(year.plots)) 

#works 
plist[[1]] 

#works 
grid.arrange(p,plist[[1]]) 

#does not work 
year.plots <- list(p,plist[[1]]) 
do.call(grid.arrange, c(year.plots)) 

#How to generalize with the following idea? 
year.plots <- list(p,plist[[1]],plist[[2]],...) 
do.call(grid.arrange, c(year.plots)) 
+0

Использование 'do.call (grid.arrange, year.plots)' вместо 'do.call (сетка .arange, c (year.plots)) 'работал для меня. – Jaap

+0

Что значит «year.plots <- list (p, plist [[1]]); do.call (grid.arrange, c (year.plots)) 'не работает? Он работает для меня (хотя 'c()' не требуется) –

+0

Если вы хотите совместить 'p' со списком, сделайте' do.call (grid.arrange, c (list (p), year.plots)) '. Это ты имел в виду? –

ответ

5

Это не обязательно, чтобы обернуть список в c(), как do.call(grid.arrange, year.plots) и do.call(grid.arrange, c(year.plots)) работу.

Однако, если вы хотите, чтобы включить дополнительные аргументы, вам нужно будет обернуть их вместе со списком в c() части, как это:

do.call(grid.arrange, c(year.plots, ncol=2)) 
0

Хорошо я глупо, я нашел ошибку в своем коде через 40 минут.

do.call(grid.arrange, c(year.plots,plist,nrow=3)) 
+0

Действительно ли это отличается от ответа, уже отправленного @Jaap? –

+0

Если я не ошибаюсь, приведенный выше ответ концентрируется на вопросе, чтобы знать, следует ли включать c() или нет. Я отвечаю на свой вопрос, чтобы узнать, как заложить как «p», так и plist. –

+2

@SamyGeronymos Как мой ответ включает 'year.plots' (который содержит' p' и 'plist'), я думаю, он отвечает на ваш вопрос. Включая как 'year.plots', так и' plist', как в вашем ответе, приведет к удвоению ИМХО. – Jaap

8

С gridExtra V> = 2.0.0, теперь вы можете сделать,

grid.arrange(grobs = year.plots) 
+0

Приятно знать, что есть новая версия, собирающаяся обновить ее немедленно :-) – Jaap

+3

сделайте это, и помогите мне ответить на соответствующую кучу вопросов «мой код сейчас сломан» здесь;) – baptiste