[Rd] Expected behaviour of is.unsorted?

Duncan Murdoch murdoch.duncan at gmail.com
Thu May 24 15:57:29 CEST 2012


On 24/05/2012 9:15 AM, Matthew Dowle wrote:
> Duncan Murdoch<murdoch.duncan<at>  gmail.com>  writes:
> >
> >  On 12-05-24 7:39 AM, Matthew Dowle wrote:
> >  >  Duncan Murdoch<murdoch.duncan<at>   gmail.com>   writes:
> >  >>
> >  >>  On 12-05-23 4:37 AM, Matthew Dowle wrote:
> >  >  Since it seems to have a bug anyway (and if so, can't be correct in anyone's
> >  >  use of it), could either is.unsorted on a data.frame return the error
> that's in
> >  >  the C code already: "only atomic vectors can be tested to be sorted", for
> >  >  safety and to lessen confusion, or be changed to return the natural
> expectation
> >  >  proposed above? The easiest quick fix would be to negate the result of
> the .gtn
> >  >  call of course, but then you could never go back.
> >
> >  I don't follow the last sentence.  If the .gtn call needs to be negated,
> >  why would you want to go back?
>
> Because then is.unsorted(DF) would work, but go by row, which you guessed above
> wasn't intended and isn't sensible. But once it worked in that way, users might
> start to depend on it; e.g., by writing is.unsorted(t(DF)). If I came
> along in future and suggested that was inefficient and wouldn't it be more
> natural and efficient if is.unsorted(DF) went by column, returning the same as
> with(DF,is.unsorted(order(a,b))) but implemented efficiently, you would fear
> that user code now depended on it going by row and say it was too late. I'd
> persist and highlight that it didn't seem in keeping with the spirit of
> is.unsorted()'s speed since it short circuits on the first unsorted item, which
> is why we love it. You'd reply that's not documented. Which it isn't. And that
> would be the end of that.

Okay, I'm going to fix the handling of .gtn results, and document the 
unsuitability of this
function for dataframes and arrays.

Duncan Murdoch

>
> >  Duncan Murdoch
> >
> >  >
> >  >  Matthew
> >  >
> >  >>  Duncan Murdoch
> >  >>
> >  >>>
> >  >>>  I understand why the first two are FALSE (1 item of anything must be
> >  >>>  sorted). I don't understand the 3rd and 4th cases where length is 2:
> >  >>>  do_isunsorted seems to call lang3(install(".gtn"), x, CADR(args))). Does
> >  >>>  that fall back to TRUE for some reason?
> >  >>>
> >  >>>  Matthew
> >  >>>
> >  >>>>  sessionInfo()
> >  >>>  R version 2.15.0 (2012-03-30)
> >  >>>  Platform: x86_64-pc-mingw32/x64 (64-bit)
> >  >>>
> >  >>>  locale:
> >  >>>  [1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United
> >  >>>  Kingdom.1252
> >  >>>  [3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
> >  >>>  [5] LC_TIME=English_United Kingdom.1252
> >  >>>
> >  >>>  attached base packages:
> >  >>>  [1] stats     graphics  grDevices utils     datasets  methods   base
> >  >>>
> >  >>>  other attached packages:
> >  >>>  [1] data.table_1.8.0
> >  >>>
> >  >>>  loaded via a namespace (and not attached):
> >  >>>  [1] tools_2.15.0
> >  >>>
> >  >>>  ______________________________________________
> >  >>>  R-devel<at>   r-project.org mailing list
> >  >>>  https://stat.ethz.ch/mailman/listinfo/r-devel
> >  >>
> >  >>
> >  >
> >  >  ______________________________________________
> >  >  R-devel<at>  r-project.org mailing list
> >  >  https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list