disordR package: an introduction to class
disindex
Experimental S4 class disindex allows
extraction methods, including list extraction, to operate with the
output of which(). Consider the following R session:
library("disordR")## Loading required package: Matrix(d <- disord(c(4,6,1,2,3,4,5,1)))## A disord object with hash 93f6fdd5ba9f84411fcd9597aafcd316a5cd6c2e 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 93f6fdd5ba9f84411fcd9597aafcd316a5cd6c2e and elements
## [1] 4 6 1 2 3 4 5 1
## (in some order)d[ind]## A disord object with hash 31722caaf6dbd31b7f0e2dadcf42fade7f23ed96 and elements
## [1] 6 5
## (in some order)d[ind] <- 99
d## A disord object with hash 1f096ee44145e843318837dcdc0d5abeb9ce3d7e 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 93f6fdd5ba9f84411fcd9597aafcd316a5cd6c2e and 2 (implementation-specific) elementswhich correctly says that the elements of ind are
implementation-specific. However, the main application of
disindex objects is for list extraction.
d <- disord(c(4,1,6,2))
dl <- sapply(d,function(x){seq(from=5,to=x)})
dl## A disord object with hash 1ce5d2705ef1a06265b2b7524a0f33de8db097a8 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:
howlong <- unlist(lapply(dl,length))
longest <- which(howlong == max(howlong))
dl[[longest]]## [1] 5 4 3 2 1