Как динамически создавать графики в grid.arrange в R?

У меня есть функция get.single.plot, которая принимает один символьный аргумент и возвращает объект графика ggplot2. Я хотел бы построить объект grid.arrange с графиками n, где n - это размер вектора (упомянутых) символьных аргументов.

Например, я хотел бы, чтобы что-то вроде этого работало:

character.argument.vector <- c("12", "1", "2")
grid.arrange(unlist(lapply(character.argument.vector, function(n) get.single.plot(n))),
         ncol = 1)

Такая штука не работает - получаю следующую информацию:

Error in arrangeGrob(..., as.table = as.table, clip = clip, main = main,  : 
input must be grobs!

как мне это сделать?


person Marta Karas    schedule 30.07.2014    source источник
comment
Спасибо, @baptiste! Вы мне не в первый раз помогаете, я очень ценю ваш вклад в сообщество!   -  person Marta Karas    schedule 30.07.2014
comment
@Marciszka, наверное, потому что он автор пакета gridExtra...   -  person David Arenburg    schedule 30.07.2014
comment
это работает только с ggplots? Я использую стандартный plot() и использую тот же синтаксис, который дает баптист, и получаю ту же ошибку, что и OP.   -  person brucezepplin    schedule 12.06.2015
comment
@baptiste, пожалуйста, добавьте свой комментарий в качестве ответа.   -  person Eric Fail    schedule 31.12.2015


Ответы (1)


С gridExtra v>=2.0 вы можете просто передать список grobs (или графиков) в grid.arrange,

grid.arrange(grobs = lapply(...), ncol=1)
person baptiste    schedule 31.12.2015