FWIW, I can work around by `Filter`ing to exclude components that have no rows<div><br></div><div><div>  > rbindlist(Filter(nrow, lapply(c("~/tmp/new.csv", "~/tmp/new2.csv"), function(x) as.data.table(read.csv(x)))))</div>
<div>     A B</div><div>  1: 1 2</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Best,<br>Garrett<br><br><div class="gmail_quote">On Wed, Nov 7, 2012 at 4:08 PM, G See <span dir="ltr"><<a href="mailto:gsee000@gmail.com" target="_blank">gsee000@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks. I actually discovered it using rbindlist; it suffers the same problem.<div><br></div><div>Garrett</div><div class="HOEnZb">
<div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Nov 7, 2012 at 4:07 PM, Cook, Malcolm <span dir="ltr"><<a href="mailto:MEC@stowers.org" target="_blank">MEC@stowers.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">not sure but try data.table::rbindlist like this (it should be faster too)<u></u><u></u></span></p>

<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">rbindlist(lapply(c("~/tmp/new.csv", "~/tmp/new2.csv"), function(x) as.data.table(read.csv(x)))<u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">~Malcolm<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>

<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt"><div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a href="mailto:datatable-help-bounces@lists.r-forge.r-project.org" target="_blank">datatable-help-bounces@lists.r-forge.r-project.org</a> [mailto:<a href="mailto:datatable-help-bounces@lists.r-forge.r-project.org" target="_blank">datatable-help-bounces@lists.r-forge.r-project.org</a>] <b>On Behalf Of </b>G See<br>

<b>Sent:</b> Wednesday, November 07, 2012 3:53 PM<br><b>To:</b> <a href="mailto:datatable-help@lists.r-forge.r-project.org" target="_blank">datatable-help@lists.r-forge.r-project.org</a><br><b>Subject:</b> [datatable-help] rbinding an empty data.table and a non-empty data.table<u></u><u></u></span></p>

</div></div><div><div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">When I try to rbind an empty data.table to a non-empty data table, all my data are converted to logical.  Here's an example<u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"># create a directory and put 2 csv file in it.<u></u><u></u></p></div><div><p class="MsoNormal">dir.create("~/tmp")<u></u><u></u></p>

</div><div><p class="MsoNormal">system("echo 'A,B' > ~/tmp/new.csv") # this csv only has headers; no data<u></u><u></u></p></div><div><p class="MsoNormal">write.csv(data.frame(A=1, B=2), row.names=FALSE, file='~/tmp/new2.csv') # this one has header and 1 row<u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">lapply(c("~/tmp/new.csv", "~/tmp/new2.csv"), read.csv)<u></u><u></u></p></div><div><p class="MsoNormal">#[[1]]<u></u><u></u></p>

</div><div><p class="MsoNormal">#[1] A B<u></u><u></u></p></div><div><p class="MsoNormal">#<0 rows> (or 0-length row.names)<u></u><u></u></p></div><div><p class="MsoNormal">#<u></u><u></u></p></div><div><p class="MsoNormal">

#[[2]]<u></u><u></u></p></div><div><p class="MsoNormal">#  A B<u></u><u></u></p></div><div><p class="MsoNormal">#1 1 2<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"># now rbind them, and we're left with the data from the non-empy csv<u></u><u></u></p>

</div><div><p class="MsoNormal">do.call(rbind, lapply(c("~/tmp/new.csv", "~/tmp/new2.csv"), read.csv))<u></u><u></u></p></div><div><p class="MsoNormal">#  A B<u></u><u></u></p></div><div><p class="MsoNormal">

#1 1 2<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"># Now let's try to work with data.tables instead of data.frames<u></u><u></u></p></div><div><p class="MsoNormal">

lapply(c("~/tmp/new.csv", "~/tmp/new2.csv"), function(x) as.data.table(read.csv(x)))<u></u><u></u></p></div><div><p class="MsoNormal">#[[1]]<u></u><u></u></p></div><div><p class="MsoNormal">#Empty data.table (0 rows) of 2 cols: A,B<u></u><u></u></p>

</div><div><p class="MsoNormal">#<u></u><u></u></p></div><div><p class="MsoNormal">#[[2]]<u></u><u></u></p></div><div><p class="MsoNormal">#   A B<u></u><u></u></p></div><div><p class="MsoNormal">#1: 1 2<u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">#Ok, but look at what happens when we rbind them<u></u><u></u></p></div><div><p class="MsoNormal">do.call(rbind, lapply(c("~/tmp/new.csv", "~/tmp/new2.csv"), function(x) as.data.table(read.csv(x))))<u></u><u></u></p>

</div><div><p class="MsoNormal">      A    B<u></u><u></u></p></div><div><p class="MsoNormal">1: TRUE TRUE<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p>

</div><div><p class="MsoNormal"> What's going on here?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Thanks,<u></u><u></u></p></div><div><p class="MsoNormal">Garrett<u></u><u></u></p>

</div></div></div></div></div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>