misc | R Documentation |
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.
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.
x |
Object of class |
Returns a disord
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.
Robin K. S. Hankin
extract
a <- disord(c(a=1,b=2,c=7))
a
names(a)
length(a)
sqrt(a)
# powers() and vars() in the mvp package return lists; see the vignette
# for more discussion.
l <- disord(list(3,6:9,1:10))
sapply(l,length)
unlist(l)
## Quick illustration of rev():
revstring <- function(s){paste(rev(unlist(strsplit(s, NULL))),collapse="")}
x <- rdis()
revstring(hash(x)) == hash(rev(x))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.