Suharto Anggono Suharto Anggono
2018-Apr-06 22:03 UTC
[Rd] Part of fastpass in 'sort.list' can make sorting unstable
In the code of functions 'order' and 'sort.list' in R 3.5.0 alpha (in https://svn.r-project.org/R/branches/R-3-5-branch/src/library/base/R/sort.R), in "fastpass, take advantage of ALTREP metadata", there is "try the reverse since that's easy too...". If it succeeds, ties are reordered, violating stability of sorting. Example: x <- sort(c(1, 1, 3)) x # 1 1 3 sort.list(x, decreasing=TRUE) # should be 3 1 2
Gabe Becker
2018-Apr-06 22:43 UTC
[Rd] Part of fastpass in 'sort.list' can make sorting unstable
Thanks for catching this. This is easy to take out without touching the rest of the machinery. It also wouldn't be too hard to write a still-faster-but-not-quite-as-much-path which correctly reverses the sortedness of a sorted vector that includes ties. My suspicion, without being the one who will ultimately make that decision, is that that wouldn't go into 3.5.0 though. Best, ~G On Fri, Apr 6, 2018 at 3:03 PM, Suharto Anggono Suharto Anggono via R-devel <r-devel at r-project.org> wrote:> In the code of functions 'order' and 'sort.list' in R 3.5.0 alpha (in > https://svn.r-project.org/R/branches/R-3-5-branch/src/ > library/base/R/sort.R), in "fastpass, take advantage of ALTREP metadata", > there is "try the reverse since that's easy too...". If it succeeds, ties > are reordered, violating stability of sorting. > > Example: > x <- sort(c(1, 1, 3)) > x # 1 1 3 > sort.list(x, decreasing=TRUE) # should be 3 1 2 > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > >-- Gabriel Becker, Ph.D Scientist Bioinformatics and Computational Biology Genentech Research [[alternative HTML version deleted]]
luke-tierney at uiowa.edu
2018-Apr-09 16:14 UTC
[Rd] Part of fastpass in 'sort.list' can make sorting unstable
Thanks -- fixed in R-devel and R-3-5-branch. luke On Fri, 6 Apr 2018, Suharto Anggono Suharto Anggono via R-devel wrote:> In the code of functions 'order' and 'sort.list' in R 3.5.0 alpha (in https://svn.r-project.org/R/branches/R-3-5-branch/src/library/base/R/sort.R), in "fastpass, take advantage of ALTREP metadata", there is "try the reverse since that's easy too...". If it succeeds, ties are reordered, violating stability of sorting. > > Example: > x <- sort(c(1, 1, 3)) > x # 1 1 3 > sort.list(x, decreasing=TRUE) # should be 3 1 2 > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Luke Tierney Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke-tierney at uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu