title: How can I make c return an expression?
body: <p>The documentation for <code>c</code> claims that:</p>
  <blockquote>
  <p>&quot;<em>The output type is determined from the highest type of the components in the hierarchy NULL &lt; raw &lt; logical &lt; integer &lt; double &lt; complex &lt; character &lt; list &lt; expression.</em>&quot;</p>
  </blockquote>
  <p>But when I feed it an expression, what I get is quite clearly a list:</p>
  <pre><code>&gt; c(1,quote(5+2),3)
  [[1]]
  [1] 1
  
  [[2]]
  5 + 2
  
  [[3]]
  [1] 3
  
  &gt; typeof(c(1,quote(5+2),3))
  [1] &quot;list&quot;
  &gt; is.list(c(1,quote(5+2),3))
  [1] TRUE
  </code></pre>
  <p>So what input is it supposed to return an expression for? I tried to feed it a function, but that seems to fall under the &quot;<em>whereas non-vector components (such names and calls) are treated as one-element lists</em>&quot; rule and therefore gives me a list.</p>