ff (version 2.2-14)

hi: Hybrid index class

Description

Class for hybrid index representation, plain and rle-packed

Usage

hi(from, to, by = 1L, maxindex = NA, vw = NULL, pack = TRUE, NAs = NULL)
# S3 method for hi
print(x, …)
# S3 method for hi
str(object, nest.lev=0, …)

Arguments

from

integer vector of lower sequence bounds

to

integer vector of upper sequence bounds

by

integer of stepsizes

maxindex

maximum indep position (needed for negative indices)

vw

virtual window information, see vw

pack

FALSE to suppress rle-packing

NAs

a vector of NA positions (not yet used)

x

an object of class 'hi' to be printed

object

an object of class 'hi' to be str'ed

nest.lev

current nesting level in the recursive calls to str

further arguments passed to the next method

Value

A list of class 'hi' with components

x

directly accessed by the C-code: the sorted index of class 'rlepack' as returned by rlepack

ix

NULL or positions to restore original order

re

logical scalar indicating if sequence was reversed from descending to ascending (in this case is.null(ix))

minindex

directly accessed by the C-code: represents the lowest positive subscript to be enumerated in case of negative subscripts

maxindex

directly accessed by the C-code: represents the highest positive subscript to be enumerated in case of negative subscripts

length

number of subscripts, whether negative or positive, not the number of selected elements

dim

NULL or dim -- used by as.matrix.hi

dimorder

NULL or dimorder

symmetric

logical scalar indicating whether we have a symmetric matrix

fixdiag

logical scalar indicating whether we have a fixed diagonal (can only be true for symmetric matrices)

vw

virtual window information vw

NAs

NULL or NA positions as returned by rlepack

Details

Class hi will represent index data either as a plain positive or negative index vector or as an rle-packed version thereof. The current implementation switches from plain index positions i to rle-packed storage of diff(i) as soon as the compression ratio is 3 or higher. Note that sequences shorter than 2 must never be packed (could cause C-side crash). Furthermore hybrid indices are guaranteed to be sorted ascending, which helps ffs access method avoiding to swap repeatedly over the same memory pages (or file positions).

See Also

as.hi for coercion, rlepack, intrle, maxindex, poslength

Examples

Run this code
# NOT RUN {
  hi(c(1, 11, 29), c(9, 19, 21), c(1,1,-2))
  as.integer(hi(c(1, 11, 29), c(9, 19, 21), c(1,1,-2)))
# }

Run the code above in your browser using DataCamp Workspace