<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000">OK, I'm retesting in 1.9.3, adding by=.EACHI. I don't see any significant difference in the timings -- setnames is still 25% faster than list(hittime=time). What exactly was fixed?</div>
<div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000"><br></div><div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000">I also don't see any way to refer to the different time vs. hittime without renaming the second time column.</div>
<div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000"><br></div><div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000">You mention some FR's, but they're hard to find without the specific numbers.</div>
<div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000"><br></div><div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000">Where can I find the 1.9.3 reference manual? I think it would be easier to understand for me than the incremental changes in the New Features listings. On my system (MacOSX), build_vignettes=TRUE gives an error in texi2dvi -- would that have generated the refman? If so, how do I fix that?</div>
<div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000"><br></div><div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000">Thanks,</div><div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000">
<br></div><div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:#330000">               -s</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 30, 2014 at 1:00 PM, Arunkumar Srinivasan <span dir="ltr"><<a href="mailto:aragorn168b@gmail.com" target="_blank">aragorn168b@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 style="word-wrap:break-word"><div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
Once again, has been fixed in 1.9.3. Now join requires `by=.EACHI` (explicit) to perform a by-without-by.</div><div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><a href="https://github.com/Rdatatable/data.table/blob/master/README.md" target="_blank">https://github.com/Rdatatable/data.table/blob/master/README.md</a></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Have a look at the first FR (by = .EACHI runs ...) that's been fixed in 1.9.3 - there's some changes in the way join results in due to these changes (which've been discussed since and for quite sometime) to bring more consistency to the DT[i, j, by] syntax. Also have a look at the second FR and the links it points to for the discussions.</div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
In general, it's better to test with the devel version (and have a look at README) for any bugs you may encounter.</div><div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div> <div><div style="font-family:helvetica,arial;font-size:13px">Arun</div></div> <div style="color:black"><br>From: <span style="color:black">Stavros Macrakis (Σταῦρος Μακράκης)</span> <a href="mailto:macrakis@alum.mit.edu" target="_blank">macrakis@alum.mit.edu</a><br>
Reply: <span style="color:black">Stavros Macrakis (Σταῦρος Μακράκης)</span> <a href="mailto:macrakis@alum.mit.edu" target="_blank">macrakis@alum.mit.edu</a><br>Date: <span style="color:black">June 30, 2014 at 5:38:10 PM</span><br>
To: <span style="color:black"><a href="mailto:datatable-help@r-forge.wu-wien.ac.at" target="_blank">datatable-help@r-forge.wu-wien.ac.at</a></span> <a href="mailto:datatable-help@r-forge.wu-wien.ac.at" target="_blank">datatable-help@r-forge.wu-wien.ac.at</a><br>
Subject: <span style="color:black"> [datatable-help] Speeding up column references with roll <br></span></div><br> <blockquote type="cite"><span><div><div></div><div><div><div class="h5">






<div dir="ltr">
<div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:rgb(51,0,0)">In
the following example, it is about 15-25% faster to use setnames
rather than j=list(name=var). Is there some better approach to
referencing the other joined column when using roll?</div>
<div class="gmail_default" style="font-family:georgia,serif;font-size:small;color:rgb(51,0,0)">
<br></div>
<div class="gmail_default">
<div class="gmail_default"><span style="color:rgb(51,0,0);font-family:'courier new',monospace"># Use
j=list(name=var)</span><br></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">calc1 <- function(d) {</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">  d[ hit==1</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">   ][
d,list(hittime=time),roll=-20</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">   ][ !<a href="http://is.na" target="_blank">is.na</a>(hittime)</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">   ]</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">}</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace"><br></font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace"># Use setnames</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">calc2 <- function(d) {</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">  temp <- d[ hit==1</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">         
 ][ d,time,roll=-20</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">         
 ]</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace"> 
setnames(temp,3,"hittime")</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">  temp[!<a href="http://is.na" target="_blank">is.na</a>(hittime)]</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">}</font></div>
<div class="gmail_default" style="color:rgb(51,0,0);font-family:georgia,serif;font-size:small">
<br></div>
</div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace"># Generate sample data</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">set.seed(12312391)</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">data <- data.table(</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">          group =
sample(1e3,1e7,replace=T),</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">          time =
ceiling(runif(1e7, 0, 1e5)),</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">          hit =
rbinom(1e7, 1, p = 0.1),</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace">  key=c("group","time"))</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace"><br></font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace"># Timing</font></div>
<div class="gmail_default"><font color="#330000" face="courier new, monospace"><br></font></div>
<div class="gmail_default"><span style="color:rgb(51,0,0);font-family:'courier new',monospace">system.time(replicate(10,{gc();calc1(data)}))
=> 69 sec system.time(replicate(10,{gc();calc2(data)})) => 52
sec</span><br></div>
</div></div></div>


_______________________________________________
<br>datatable-help mailing list
<br><a href="mailto:datatable-help@lists.r-forge.r-project.org" target="_blank">datatable-help@lists.r-forge.r-project.org</a>
<br><a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help</a></div></div></span></blockquote></div>
</blockquote></div><br></div>