This page documents various functions that work for disords, and I will
add to these from time to time as I add new functions that make sense
for disord objects. Functions like sin() and abs() work
as expected: they take and return disord objects with the same
hash as x (which means that idiom like x + sin(x) is
accepted). However, there are a few functions that are a little more
involved:
rev() reverses its argument and returns a disord
object with a reversed hash, which ensures that rev(rev(x))==x
(and the two are consistent).
sort() returns a vector of sorted elements (not a
disord)
length() returns the length of the data component of the
object.
sapply(X,f) returns a disord object which is the result of
applying f() to each element of X.
match(x,table) should behave as expected but note that if
table is a disord, the result is not defined (because it
is not known where the elements of x occur in table).
Nevertheless x %in% table is defined and returns a
disord object.
Some functionality is not yet implemented. Factors, lists, and named
vectors do not behave entirely consistently in the package;
paste() gives inconsistent results when called with disords.
Also, for() loops are incompatible with disord discipline, as
they impose an ordering (for() accesses the .Data slot of
its argument, which is a regular R vector). Thus:
> (a <- disord(1:3))
A disord object with hash 555f6bea49e58a2c2541060a21c2d4f9078c3086 and elements
[1] 1 2 3
(in some order)
> for(i in a){print(i)}
[1] 1
[1] 2
[1] 3
>
Above, we see that for() uses the ordering of the .Data
slot of S4 object a, even though elements() has
not been explicitly called.