title: Why does rbindlist not respect column names?
body: <p>I just discovered this bug, only to find that some people are calling it a <a href="https://stackoverflow.com/questions/15673550/why-is-rbindlist-better-than-rbind">"feature"</a>. This makes <code>rbindlist</code> NOT like <code>do.call("rbind",l)</code> as <code>rbind</code> WILL respect column names. Further, there is no mention of this entirely unexpected behavior in the documentation. Is this really intentional?</p>
  
  <p>Code example:</p>
  
  <pre><code>&gt; library(data.table)
  &gt; DT1 &lt;- data.table(a=1, b=2)
  &gt; DT2 &lt;- data.table(b=3, a=4)
  &gt; DT1
  a b
  1: 1 2
  &gt; DT2
  b a
  1: 3 4
  </code></pre>
  
  <p>I would expect that <code>rbind</code>'ing these would produce columns with a = 1,4 ; b = 2,3. And get that with <code>rbind.data.table</code> and <code>rbind.data.frame</code>, though <code>rbind.data.table</code> produces warnings.</p>
  
  <pre><code>&gt; rbind(DT1, DT2)
  a b
  1: 1 2
  2: 4 3
  Warning message:
  In data.table::.rbind.data.table(...) :
  Argument 2 has names in a different order. Columns will be bound by name for consistency with base. You can drop names (by using an unnamed list) and the columns will then be joined by position, or set use.names=FALSE. Alternatively, explicitly setting use.names to TRUE will remove this warning.
  &gt; rbind(as.data.frame(DT1), as.data.frame(DT2))
  a b
  1 1 2
  2 4 3
  &gt; do.call('rbind', list(DT1, DT2))
  a b
  1: 1 2
  2: 4 3
  Warning message:
  In data.table::.rbind.data.table(...) :
  Argument 2 has names in a different order. Columns will be bound by name for consistency with base. You can drop names (by using an unnamed list) and the columns will then be joined by position, or set use.names=FALSE. Alternatively, explicitly setting use.names to TRUE will remove this warning.
  </code></pre>
  
  <p><code>rbindlist</code>, however, is happy to silently corrupt the data:</p>
  
  <pre><code>&gt; rbindlist(list(DT1, DT2))
  a b
  1: 1 2
  2: 3 4
  </code></pre>