On 07/06/11 19:35, Matthew Dowle wrote:
The documentation could be improved, but ?setkey does say :

   "The columns are sorted in ascending order always."

Yes, but my beef was not with the sort order but that the class of the column changes without warning. I have no problems with the "A" value coming before "B" in the data.table but you can do that by sorting the levels() character information without changing the class of the column? That is: I do not expect that X[1,A] < X[2,A] when A is an ordered factor; I expect that as.character(X[1,A]) < as.character(X[2,A]).

Allan

More information in previous thread :

http://r.789695.n4.nabble.com/Behavior-of-setkey-with-factors-tp2319612p2319612.html


Matthew



On Tue, 2011-06-07 at 07:50 +0100, Allan Engelhardt wrote:
Is it documented anywhere that factors may lose their ordered-ness when
used as keys?  E.g.

library("data.table")
F<- factor(LETTERS[1:3], levels = rev(LETTERS), ordered = TRUE)
X<- data.table(A = F, B = F, key = "A")
str(X)                     # A is no longer ordered; B still is
stopifnot(is.ordered(X$B)) # OK
stopifnot(is.ordered(X$A)) # Fails!

I can kind of see why it might happen, but it still caught me by
surprise, and if it ever happens on (some?) ad-hoc index lookups then it
will really cause bugs in my code....

Allan
(Above is simpler version of example sent off-list to Matthew)

  >  sessionInfo()
R version 2.13.0 (2011-04-13)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
   [1] LC_CTYPE=en_GB.utf8       LC_NUMERIC=C
   [3] LC_TIME=en_GB.utf8        LC_COLLATE=en_GB.utf8
   [5] LC_MONETARY=C             LC_MESSAGES=en_GB.utf8
   [7] LC_PAPER=en_GB.utf8       LC_NAME=C
   [9] LC_ADDRESS=C              LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C

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

other attached packages:
[1] data.table_1.6 ctv_0.7-2

loaded via a namespace (and not attached):
[1] tools_2.13.0

_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help

_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help

Reply via email to