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 (or identify functions that break disord discipline).
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.
lapply(x,f) returns
disord(lapply(elements(x),f,...),h=hash(x)). Note that double
square bracket extraction, as in x[[i]], is disallowed (see
extract.Rd).
which() returns a disind object when given a
Boolean disord
unlist() takes a disord list, flattens it and
returns a disord vector. It requires the recursive flag
of base::unlist() to be TRUE, which it is by default,
interpreting this to mean “kill all the structure in any
sublists”. If the list comprises only length-one vectors, the
returned value retains the same hash as the argument; if not, a new
hash is generated.
diff() is undefined for disord objects.
rbind() and cbind() are undefined for disord
objects as they break disord discipline. Function binder()
returns a generic, and hopefully informative, error message [the
package defines methods for rbind2() and cbind2()]
jitter() takes a disord object, jitters the
elements, and returns a disord object with the correct hash
code.