<div dir="ltr">Oops; I meant to reply to all, and then forgot after I discarded and rewrote my<div>message a few times.  I suspect (although I'm not absolutely certain) that if</div><div>NULL or similar did the same thing as returning a 0-row data.table with the</div>
<div>appropriate number of columns, some operations could be sped up a bit.</div><div>In those cases, the data.table code wouldn't need to check the number and</div><div>type of the columns returned.</div><div><br></div>
<div>I suspect that unless someone knows a secret, ultrafast way to iterate through</div><div>a list of all combinations of a set of items and return the subset of those that</div><div>match some criteria, that I'm as close to optimal as I'm likely to get right now.<br>
<div class="gmail_extra"><br clear="all"><div>-------<br>Nathaniel Graham<br><a href="mailto:npgraham1@gmail.com" target="_blank">npgraham1@gmail.com</a><br><a href="mailto:npgraham1@uky.edu" target="_blank">npgraham1@uky.edu</a></div>

<br><br><div class="gmail_quote">On Tue, Sep 17, 2013 at 5:22 PM, Frank Erickson <span dir="ltr"><<a href="mailto:FErickson@psu.edu" target="_blank">FErickson@psu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Well, rbindlist(list()) says "Null data.table" (though it doesn't pass the is.null() test). Maybe someone else has an idea how to deal with the no-results case. By the way, it's best to use "reply to all" to make sure you reply to the mailing list, too; they should be able to see your message quoted below, though.<span class="HOEnZb"><font color="#888888"><div>


<br></div><div>--Frank</div></font></span><div><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Sep 17, 2013 at 5:03 PM, Nathaniel Graham <span dir="ltr"><<a href="mailto:npgraham1@gmail.com" target="_blank">npgraham1@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Frank,<div><br></div><div>Thanks.  This seems to have done the trick, so long as I'm careful to check for</div>


<div>zero-length lists and return data.table(i = integer(), j = integer()) in those</div><div>
cases.  Essentially, I have to test every combination of i and j to see if it's</div><div>"interesting" or not, and some groups have a lot of rows.  At the moment I'm</div><div>attacking some other low hanging fruit, like speeding up the comparisons</div>



<div>I have to do.</div><div><br></div><div>As a side note, it would be kind of nice if there was a simple way to clue</div><div>data.table to the fact that there are no rows to return, like returning NULL</div><div>or NA or similar.</div>



</div><div class="gmail_extra"><div><br clear="all"><div>-------<br>Nathaniel Graham<br><a href="mailto:npgraham1@gmail.com" target="_blank">npgraham1@gmail.com</a><br><a href="mailto:npgraham1@uky.edu" target="_blank">npgraham1@uky.edu</a></div>
</div></div></blockquote></div></div></div></div></div></blockquote></div></div></div></div>