Matthew Dowle suggested I put this up for a discussion here.
<p>
This is continuation of the discussion that started on <a href="http://stackoverflow.com/questions/16093289/data-table-join-and-j-expression-unexpected-behavior/" target="_top" rel="nofollow" link="external">SO</a> and resulted in <a href="https://r-forge.r-project.org/tracker/index.php?func=detail&aid=2696&group_id=240&atid=978" target="_top" rel="nofollow" link="external">FR2696</a> (I recommend reading the latter first, as it's much more clear).
<p>
My case for the change boils down to the following: I believe <b>d[i, j, by = b]</b> should be always understood to mean
<p>
<b>"take d, apply i, return j by b"</b>
<p>
instead of the much more complicated current behavior, which is:
<p>
<b>"take d, apply i, if i was not a merge, return j by b, if i was a merge, if no by, then return j by key, else if b and b == key, complain and return j by b, else return j by b"</b>
<p>
I believe, while disruptive to some current users, this will make data.table much more user-friendly for any future users (one piece of evidence I would suggest for this, besides my plea, is that FAQs 1.13-1.14 (and part of 1.12) would become completely unnecessary).
<p>
This is regarding syntax only, and I do NOT propose any changes to underlying behavior, in particular the speed-up when you do a "by" by the key of the join should stay (and should be done iff by=key is present).

        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://r.789695.n4.nabble.com/changing-data-table-by-without-by-syntax-to-require-a-by-tp4664770.html">changing data.table by-without-by syntax to require a "by"</a><br/>
Sent from the <a href="http://r.789695.n4.nabble.com/datatable-help-f2315188.html">datatable-help mailing list archive</a> at Nabble.com.<br/>