Ausgabe von gridExtra :: grid.arrange in ein Objekt speichern

Ich platziere mehrere Diagramme mit @ in einem BilgridExtra::grid.arrange und möchten die Option haben, das kombinierte Diagramm als Objekt zu speichern, das innerhalb einer Funktion als Teil einer Liste zurückgegebener Objekte zurückgegeben werden kann. Im Idealfall möchte ich dies tun, ohne das Plotobjekt zu drucken.

Der folgende Code erstellt zwei Diagramme und kombiniert sie mitgrid.arrange und versucht, das Ergebnis in @ zu speichex. Jedoch,x ergibtNULL und der Plot wird gedruckt. Die Dokumentation fürgrid.arrange zeigt mich aufarrangeGrob und schlägt vor, dass das Plotten mit @ deaktiviert werden kaplot=FALSE, aber ich erhalte eine Fehlermeldung, wenn ich das versuche, weilFALSE ist kein Grob-Objekt.

Irgendwelche Vorschläge für was ich nicht verstehe?

# R under development
# Windows 7 (32 bit)
# ggplot2 1.0.0
# gridExtra 0.9.1

p1 <- ggplot(mtcars, aes(x=factor(cyl), y=mpg)) + geom_boxplot()

p2 <- ggplot(mtcars, aes(x=factor(cyl), y=wt)) + geom_boxplot()

x <- gridExtra::grid.arrange(p1, p2)

x

Per die Kommentare, ich füge diese Änderung hinzu. Wenn ich es mit @ probiearrangeGrob, Ich bekomme überhaupt keine Ausgabe.

> gridExtra::arrangeGrob(p1, p2)
> print(gridExtra::arrangeGrob(p1, p2))
Error: No layers in plot
> x <- gridExtra::arrangeGrob(p1, p2)
> x
Error: No layers in plot

Antworten auf die Frage(4)

Ihre Antwort auf die Frage