Disordered indices with the `disordR` package: an introduction to class `disindex`
Robin Hankin
2023-03-22
Source:vignettes/disindex.Rmd
disindex.Rmd

Experimental S4 class disindex allows
extraction methods, including list extraction, to operate with the
output of which(). Consider the following R session:
## A disord object with hash 8ce3478c0389b33691771da0ac3b47b09b2e2a88 and elements
## [1] 4 6 1 2 3 4 5 1
## (in some order)
ind <- which(d>4)Above, object ind points to those elements of
d which exceed 4. Thus:
d## A disord object with hash 8ce3478c0389b33691771da0ac3b47b09b2e2a88 and elements
## [1] 4 6 1 2 3 4 5 1
## (in some order)
d[ind]## A disord object with hash c7d1e4a8931ee71b56d8e4a2a9ed8701b8a9ef5d and elements
## [1] 6 5
## (in some order)
d[ind] <- 99
d## A disord object with hash e3c6eb7c4d2247e66eb275e0958b1ff0ea748d6e and elements
## [1] 4 99 1 2 3 4 99 1
## (in some order)
However, we cannot assert that ind is elements 2 and 7
of d, for the elements of d are stored in an
implementation-specific order. If we examine ind directly,
we see:
ind## A disind object with hash 8ce3478c0389b33691771da0ac3b47b09b2e2a88 and 2 (implementation-specific) elements
which correctly says that the elements of ind are
implementation-specific. However, the main application of
disindex objects is for list extraction.
## A disord object with hash 181e57891ed90897f1e97e9f2a1f1fbb52792f7c and elements
## [[1]]
## [1] 5 4
##
## [[2]]
## [1] 5 4 3 2 1
##
## [[3]]
## [1] 5 6
##
## [[4]]
## [1] 5 4 3 2
##
## (in some order)
Suppose I wish to extract from object dl just the
element with the longest length. Noting that this would be a
disord-compliant question, we would use:
## [1] 5 4 3 2 1