title: ggarrange plot all plots in a list
body: <p>I have lots of plot that I want to put them on one page, <code>ggarrange</code> does a good work on this, however, it seems like I have to put each of those plots in the list in which  they are stored as input of this <code>ggarrange</code> function, other than put the list as input directly, see following for details:</p>
  <p>A naive example:</p>
  <pre><code>p1 &lt;- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) +
    geom_point()
  p2 &lt;- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) +
    geom_point() + facet_wrap( ~ cyl, ncol=2, scales = &quot;free&quot;) +
    guides(colour=&quot;none&quot;) +
    theme()
  plot_list = list(p1,p2) 
  </code></pre>
  <p>What I can do for now:</p>
  <pre><code>ggarrange(p1,p2, widths = c(2,1), labels = c(&quot;a&quot;, &quot;b&quot;))
  </code></pre>
  <p>What I really want but failed to do:</p>
  <pre><code>ggarrange(plot_list, widths = c(2,1), labels = c(&quot;a&quot;, &quot;b&quot;))
  </code></pre>
  <p>Anyone know how? this could save a lot of time if the number of plots is large and may change from time to time.
  The sample is not mine, copied from <a href="https://www.rdocumentation.org/packages/egg/versions/0.4.0/topics/ggarrange" rel="noreferrer">here</a>.</p>
  <p><strong>======= EDIT ========</strong></p>
  <p>According to the excellent answers below, there are at least to options available:
  1, See the accepted answer,
  2, Which is come from a deleted answer with little modification by me
  <code>do.call(ggarrange, c(plot_list[1:2], widths = c(2, 1), labels = c(&quot;a&quot;, &quot;b&quot;)))</code>
  To pass argument to function <code>ggarrange</code>, <code>c()</code> worked for me but <code>as.list()</code> did not.</p>