Expected behaviour of is.unsorted?
On 12-05-23 4:37 AM, Matthew Dowle wrote:
Hi, I've read ?is.unsorted and searched. Have found a few items but nothing close, yet. Is the following expected?
is.unsorted(data.frame(1:2))
[1] FALSE
is.unsorted(data.frame(2:1))
[1] FALSE
is.unsorted(data.frame(1:2,3:4))
[1] TRUE
is.unsorted(data.frame(2:1,4:3))
[1] TRUE IIUC, is.unsorted is intended for atomic vectors only (description of x in ?is.unsorted). Indeed the C source (src/main/sort.c) contains an error message "only atomic vectors can be tested to be sorted". So that is the error message I expected to see in all cases above, since I know that data.frame is not an atomic vector. But there is also this in ?is.unsorted: "except for atomic vectors and objects with a class (where the>= or> method is used)" which I don't understand. Where>= or> is used by what, and where?
If you look at the source, you will see that the basic test for classed objects is all(x[-1L] >= x[-length(x)]) (in the function base:::.gtn). This comparison doesn't really makes sense for dataframes, but it does seem to be backwards: that tests that x[2] >= x[1], x[3] >= x[2], etc., returning TRUE if all comparisons are TRUE: but that sounds like it should be is.sorted(), not is.unsorted(). Or is it my brain that is backwards? 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