[Rd] Problem with order() and I()

Martin Maechler maechler at stat.math.ethz.ch
Tue Sep 9 16:19:08 CEST 2014


>>>>> MacQueen, Don <macqueen1 at llnl.gov>
>>>>>     on Mon, 8 Sep 2014 16:06:21 +0000 writes:

    > I have found that order() fails in a rather arcane circumstance, as in
    > this example:

    >> foo <- I( c('x','\265g') )
    >> order(foo)
    > Error in if (xi > xj) 1L else -1L : missing value where TRUE/FALSE needed

    >> foo <-c('x','\265g')
    >> order(foo)
    > [1] 1 2

yes, this is not desirable.
order() in such cases calls xtfrm()  {as documented}
and that ends up calling rank() and then the internal  .gt()
where the bug happens because

 > I("x") > I("\xb5g")
 [1] NA

but really I think the change should happen in xtfrm.Asis(.)
which I think should drop the class also in this case.

More on this, once we have fixed it.

Thank you, Don, very much!

Martin Maechler,
ETH Zurich

    >> sessionInfo()
    > R version 3.1.1 (2014-07-10)
    > Platform: x86_64-apple-darwin13.1.0 (64-bit)

    > locale:
    > [1] C

    > attached base packages:
    > [1] stats     graphics  grDevices utils     datasets  methods   base

    > Thanks
    > -Don

    > p.s.
    > Just a little background, irrelevant unless one wonders why I¹m using I()
    > and \265:

    > If I were writing new code I wouldn¹t be using I(), since there are better
    > ways now to achieve the same end (preventing the creation of factors in
    > data frames), but the scripts that use it are quite old,  originally
    > developed in 2001.

    > In at least some but perhaps limited contexts, Œ\265¹ produces the greek
    > letter mu, and that¹s why I¹m using it. And if I remember correctly, 2001
    > is prior to the current R support for locales and extended character sets.
    > Using \265 is what I could find at that time to get a mu into my output.

    > I came across this while checking some things; it¹s not actually breaking
    > my scripts, so I doubt it¹s due to any recent change.


    > -- 
    > Don MacQueen

    > Lawrence Livermore National Laboratory
    > 7000 East Ave., L-627
    > Livermore, CA 94550
    > 925-423-1062

    > ______________________________________________
    > R-devel at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list