<div>
                    Just tested this on the devel version (today's). And yes, this issue happens. But I'm not sure if this is an issue with 'data.table' per-se:
                </div><div><br></div><div>On a clean session, if you do this:</div><div><br></div><div>require(data.table)</div><div><div>set.seed(32)</div><div>n <- 3</div><div>dt <- data.table(y=rnorm(n), by=round( rnorm(n), 1))</div><div><br></div><div>ll <- list(dt$by)</div><div>yy <- ll[[1L]]</div><div>address(dt$by) # [1] "0x7fad3c524a40"</div><div>address(ll[[1L]]) # [1] "0x7fad3c524a40"</div><div>address(yy) # [1] "0x7fad3c524a40"</div></div>
                <div><div><br></div><div>You see that all three are pointing to the same address. And that's why the result is wrong because internally "yy" will be changed by reference during "fastorder". And it is *not* supposed to point to "yy" but to have made a copy.</div><div><br></div><div>After doing it the first time, the pointing changes back to how it's in R-stable.. Not sure if this is desirable. Probably should report on R-devel.</div><div><br></div><div>On R-3.0.2, the same commands as above on a clean session:</div><div><br></div><div><div>require(data.table)</div><div><div>set.seed(32)</div><div>n <- 3</div><div>dt <- data.table(y=rnorm(n), by=round( rnorm(n), 1))</div><div><br></div><div>ll <- list(dt$by)</div><div>yy <- ll[[1L]]</div><div>address(dt$by) # [1] "0x7fc35b640408"</div><div>address(ll[[1L]]) # [1] "0x7fc35a0ec838"</div><div>address(yy) # [1] "0x7fc35a0ec838"</div></div><div></div></div><div><br></div><div><br></div><div>Arun</div><div><br></div></div>
                 
                <p style="color: #A0A0A8;">On Thursday, December 19, 2013 at 9:43 AM, Arunkumar Srinivasan wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div>
                <div>
                    Simon,
                </div><div><br></div><div>Thanks. One more towards my way :). I think we've nailed down the problem to R-devel version. I'll write again once I discuss it over with Kevin.</div>
                <div><div><br></div><div>Arun</div><div><br></div></div>
                  
                <p style="color: #A0A0A8;">On Thursday, December 19, 2013 at 9:26 AM, Simon Zehnder wrote:</p><blockquote type="cite"><div>
                    <span><div><div><div>Hi Arun,</div><div><br></div><div>here the results on Mac OS X Mavericks with gcc 4.8.2</div><div><br></div><div>data.table 1.8.10:</div><div><br></div><blockquote type="cite"><div><div>set.seed(32)</div><div>n <- 3</div><div>dt <- data.table(</div></div></blockquote><div>+ y=rnorm(n),</div><div>+ by=round( rnorm(n), 1)</div><div>+ )</div><blockquote type="cite"><div><div><br></div><div>dt[,</div></div></blockquote><div>+ list(max=max(y, na.rm=TRUE)),</div><div>+ by=list(by)</div><div>+ ]</div><div>    by        max</div><div>1: 0.7 0.01464054</div><div>2: 0.4 0.87328871</div><blockquote type="cite"><div><div><br></div><div>dt[,</div></div></blockquote><div>+ list(max=max(y, na.rm=TRUE)),</div><div>+ by=list(by)</div><div>+ ]</div><div>    by        max</div><div>1: 0.7 0.01464054</div><div>2: 0.4 0.87328871</div><div><br></div><div>data.table 1.8.11:</div><div><br></div><blockquote type="cite"><div><div>set.seed(32)</div><div>n <- 3</div><div>dt <- data.table(</div></div></blockquote><div>+ y=rnorm(n),</div><div>+ by=round( rnorm(n), 1)</div><div>+ )</div><blockquote type="cite"><div><div><br></div><div>dt[,</div></div></blockquote><div>+ list(max=max(y, na.rm=TRUE)),</div><div>+ by=list(by)</div><div>+ ]</div><div>    by        max</div><div>1: 0.7 0.01464054</div><div>2: 0.4 0.87328871</div><blockquote type="cite"><div><div><br></div><div>dt[,</div></div></blockquote><div>+ list(max=max(y, na.rm=TRUE)),</div><div>+ by=list(by)</div><div>+ ]</div><div>    by        max</div><div>1: 0.7 0.01464054</div><div>2: 0.4 0.87328871</div><div><br></div><div>Best</div><div><br></div><div>Simon</div><div><br></div><div><br></div><div>On 19 Dec 2013, at 09:05, Arunkumar Srinivasan <<a href="mailto:aragorn168b@gmail.com">aragorn168b@gmail.com</a>> wrote:</div><div><br></div><blockquote type="cite"><div><div>Simon, sure.</div><div><br></div><div>set.seed(32)</div><div>n <- 3</div><div>dt <- data.table(</div><div>y=rnorm(n),</div><div>by=round( rnorm(n), 1)</div><div>)</div><div><br></div><div>dt[,</div><div>list(max=max(y, na.rm=TRUE)),</div><div>by=list(by)</div><div>]</div><div><br></div><div>dt[,</div><div>list(max=max(y, na.rm=TRUE)),</div><div>by=list(by)</div><div>]</div><div><br></div><div><br></div><div><br></div><div>Arun</div><div><br></div><div>On Thursday, December 19, 2013 at 8:49 AM, Simon Zehnder wrote:</div><div><br></div><blockquote type="cite"><div><div>Arun,</div><div><br></div><div>if you could send me the reproducible code in copyable form I can as well try it on Mac OS X Mavericks with gcc 4.8.</div><div><br></div><div>Best</div><div><br></div><div>Simon</div><div><br></div><div>On 19 Dec 2013, at 08:44, Arunkumar Srinivasan <<a href="mailto:aragorn168b@gmail.com">aragorn168b@gmail.com</a>> wrote:</div><div><br></div><blockquote type="cite"><div><div>Aha, the issue seems to be with 'uniqlist', not sure why it gives</div><blockquote type="cite"><div>(f__ = data.table:::uniqlist(byval, order=o__)) # 1,3</div></blockquote><div>1,2,3 for you and 1,3 consistently for me. I'll revert this back to `duplist` for now. Not sure how to solve this though. I've tried it so far on 3 machines:</div><div><br></div><div>1) OS X 10.8.5 + libvm (gcc)</div><div>2) OS X Mavericks + Clang</div><div>3) Debian Weezy + gcc</div><div><br></div><div>All of them give consistent output. Man this is such a drag.</div><div><br></div><div>Arun</div><div><br></div><div>On Thursday, December 19, 2013 at 8:37 AM, Kevin Ushey wrote:</div><div><br></div><blockquote type="cite"><div><div>Hi Arun,</div><div><br></div><div>Here's the output on my machine -- other information missing from</div><div>before; it's with OSX Mavericks, with R and data.table compiled with</div><div>Apple clang.</div><div><br></div><div>---</div><div><br></div><blockquote type="cite"><div><div>library(data.table, lib="/Users/kevinushey/Library/R/3.1/library")</div><div>set.seed(32)</div><div>n <- 3</div><div>dt <- data.table(</div></div></blockquote><div>+ y=rnorm(n),</div><div>+ by=round( rnorm(n), 1)</div><div>+ )</div><div>## run one</div><blockquote type="cite"><div><div>byval <- list(by=dt$by)</div><div>(o__ <- data.table:::fastorder(byval)) # 2,3,1</div></div></blockquote><div>[1] 2 3 1</div><blockquote type="cite"><div>(f__ = data.table:::uniqlist(byval, order=o__)) # 1,3</div></blockquote><div>[1] 1 2 3</div><blockquote type="cite"><div>(len__ = data.table:::uniqlengths(f__, nrow(dt))) # 2,1</div></blockquote><div>[1] 1 1 1</div><blockquote type="cite"><div>(firstofeachgroup = o__[f__]) # 2,1</div></blockquote><div>[1] 2 3 1</div><blockquote type="cite"><div>(origorder = data.table:::iradixorder(firstofeachgroup)) # 2,1</div></blockquote><div>[1] 3 1 2</div><blockquote type="cite"><div>(f__ = f__[origorder]) # 3,1</div></blockquote><div>[1] 3 1 2</div><blockquote type="cite"><div>(len__ = len__[origorder]) # 2,1</div></blockquote><div>[1] 1 1 1</div><div><br></div><div>## run two</div><blockquote type="cite"><div>(o__ <- data.table:::fastorder(byval)) # 2,3,1</div></blockquote><div>[1] 1 2 3</div><blockquote type="cite"><div>(f__ = data.table:::uniqlist(byval, order=o__)) # 1,3</div></blockquote><div>[1] 1 3</div><blockquote type="cite"><div>(len__ = data.table:::uniqlengths(f__, nrow(dt))) # 2,1</div></blockquote><div>[1] 2 1</div><blockquote type="cite"><div>(firstofeachgroup = o__[f__]) # 2,1</div></blockquote><div>[1] 1 3</div><blockquote type="cite"><div>(origorder = data.table:::iradixorder(firstofeachgroup)) # 2,1</div></blockquote><div>[1] 1 2</div><blockquote type="cite"><div>(f__ = f__[origorder]) # 3,1</div></blockquote><div>[1] 1 3</div><blockquote type="cite"><div>(len__ = len__[origorder]) # 2,1</div></blockquote><div>[1] 2 1</div><div><br></div><div>On Wed, Dec 18, 2013 at 11:22 PM, Arunkumar Srinivasan</div><div><<a href="mailto:aragorn168b@gmail.com">aragorn168b@gmail.com</a>> wrote:</div><blockquote type="cite"><div><div>Not sure how to debug without being able to reproduce. Tried on Mac OS X</div><div>10.8.5 and Debian GNU/Linux 7 (wheezy). I don't have access to a windows</div><div>machine. I consistently gives me this:</div><div><br></div><blockquote type="cite"><div>dt[,</div></blockquote><div>+ list(max=max(y, na.rm=TRUE)),</div><div>+ by=list(by)</div><div>+ ]</div><div>by max</div><div>1: 0.7 0.01464054</div><div>2: 0.4 0.87328871</div><blockquote type="cite"><div><div><br></div><div>dt[,</div></div></blockquote><div>+ list(max=max(y, na.rm=TRUE)),</div><div>+ by=list(by)</div><div>+ ]</div><div>by max</div><div>1: 0.7 0.01464054</div><div>2: 0.4 0.87328871</div><div><br></div><div>Can either of you provide me with the output of these steps in cases where</div><div>there's an error? I've commented the output I get for each step.</div><div><br></div><div>byval <- list(by=dt$by)</div><div>o__ <- data.table:::fastorder(byval) # 2,3,1</div><div>f__ = data.table:::uniqlist(byval, order=o__) # 1,3</div><div>len__ = data.table:::uniqlengths(f__, nrow(dt)) # 2,1</div><div>firstofeachgroup = o__[f__] # 2,1</div><div>origorder = data.table:::iradixorder(firstofeachgroup) # 2,1</div><div>f__ = f__[origorder] # 3,1</div><div>len__ = len__[origorder] # 2,1</div><div><br></div><div><br></div><div>Arun</div><div><br></div><div><...snip...></div></div></blockquote></div></blockquote><div><br></div><div>_______________________________________________</div><div>datatable-help mailing list</div><div><a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a></div><div><a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help</a></div></div></blockquote></div></blockquote></div></blockquote></div></div></span>
                  
                  
                  
                  
                </div></blockquote><div>
                    <br>
                </div>
            </div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>