| misc {disordR} | R Documentation |
Miscellaneous functions
Description
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 adisordobject with a reversed hash, which ensures thatrev(rev(x))==x(and the two are consistent).sort()returns a vector of sorted elements (not adisord)length()returns the length of the data component of the objectsapply(X,f)returns a disord object which is the result of applyingf()to each element ofX.match(x,table)should behave as expected but note that iftableis adisord, the result is not defined (because it is not known where the elements ofxoccur intable). Neverthelessx %in% tableis defined and returns adisordobject.lapply(x,f)returnsdisord(lapply(elements(x),f,...),h=hash(x)). Note that double square bracket extraction, as inx[[i]], is disallowed (seeextract.Rd).which()returns adisindobject when given a Booleandisordunlist()takes adisordlist, flattens it and returns adisordvector. It requires therecursiveflag ofbase::unlist()to beTRUE, 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 fordisordobjects.
Arguments
x |
Object of class |
Value
Returns a disord
Note
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.
Author(s)
Robin K. S. Hankin
See Also
Examples
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))