misc: Miscellaneous functions

miscR 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 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.

Arguments

x

Object of class disord

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

extract

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))


disordR documentation built on May 29, 2024, 11:06 a.m.