A bitwhich object represents a boolean filter like a bit object (NAs are not allowed)
but uses a sparse representation suitable for very skewed (asymmetric) selections.
Three extreme cases are represented with logical values, no length via logical(),
all TRUE with TRUE and all FALSE with FALSE. All other selections are represented with
positive or negative integers, whatever is shorter.
This needs less RAM compared to logical (and often less than bit or which).
Logical operations are fast if the selection is asymetric (only few or almost all selected).
an object of class 'bitwhich' carrying two attributes
maxindex
see above
poslength
see above
Arguments
maxindex
length of the vector
x
Information about which positions are FALSE or TRUE: either logical() or TRUE or FALSE or a integer vector of positive or of negative subscripts.
xempty
what to assume about parameter x if x=integer(0), typically TRUE or FALSE.
poslength
tuning: poslength is calculated automatically, you can give poslength explicitely, in this case it must be correct and x must be sorted and not have duplicates.
is.unsorted
tuning: FALSE implies that x is already sorted and sorting is skipped