Learn R Programming

bit64 (version 4.5.2)

ramsort.integer64: Low-level intger64 methods for in-RAM sorting and ordering

Description

Fast low-level methods for sorting and ordering. The ..sortorder methods do sorting and ordering at once, which requires more RAM than ordering but is (almost) as fast as as sorting.

Usage

# S3 method for integer64
shellsort(x, has.na=TRUE, na.last=FALSE, decreasing=FALSE, ...)
# S3 method for integer64
shellsortorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE, ...)
# S3 method for integer64
shellorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE, ...)
# S3 method for integer64
mergesort(x, has.na=TRUE, na.last=FALSE, decreasing=FALSE, ...)
# S3 method for integer64
mergeorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE, ...)
# S3 method for integer64
mergesortorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE, ...)
# S3 method for integer64
quicksort(x, has.na=TRUE, na.last=FALSE, decreasing=FALSE
, restlevel=floor(1.5*log2(length(x))), ...)
# S3 method for integer64
quicksortorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE
, restlevel=floor(1.5*log2(length(x))), ...)
# S3 method for integer64
quickorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE
, restlevel=floor(1.5*log2(length(x))), ...)
# S3 method for integer64
radixsort(x, has.na=TRUE, na.last=FALSE, decreasing=FALSE, radixbits=8L, ...)
# S3 method for integer64
radixsortorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE, radixbits=8L, ...)
# S3 method for integer64
radixorder(x, i, has.na=TRUE, na.last=FALSE, decreasing=FALSE, radixbits=8L, ...)
# S3 method for integer64
ramsort(x, has.na = TRUE, na.last=FALSE, decreasing = FALSE, stable = TRUE
, optimize = c("time", "memory"), VERBOSE = FALSE, ...)
# S3 method for integer64
ramsortorder(x, i, has.na = TRUE, na.last=FALSE, decreasing = FALSE, stable = TRUE
, optimize = c("time", "memory"), VERBOSE = FALSE, ...)
# S3 method for integer64
ramorder(x, i, has.na = TRUE, na.last=FALSE, decreasing = FALSE, stable = TRUE
, optimize = c("time", "memory"), VERBOSE = FALSE, ...)

Value

These functions return the number of NAs found or assumed during sorting

Arguments

x

a vector to be sorted by ramsort.integer64 and ramsortorder.integer64, i.e. the output of sort.integer64

i

integer positions to be modified by ramorder.integer64 and ramsortorder.integer64, default is 1:n, in this case the output is similar to order.integer64

has.na

boolean scalar defining whether the input vector might contain NAs. If we know we don't have NAs, this may speed-up. Note that you risk a crash if there are unexpected NAs with has.na=FALSE

na.last

boolean scalar telling ramsort whether to sort NAs last or first. Note that 'boolean' means that there is no third option NA as in sort

decreasing

boolean scalar telling ramsort whether to sort increasing or decreasing

stable

boolean scalar defining whether stable sorting is needed. Allowing non-stable may speed-up.

optimize

by default ramsort optimizes for 'time' which requires more RAM, set to 'memory' to minimize RAM requirements and sacrifice speed

restlevel

number of remaining recursionlevels before quicksort switches from recursing to shellsort

radixbits

size of radix in bits

VERBOSE

cat some info about chosen method

...

further arguments, passed from generics, ignored in methods

Author

Jens Oehlschlägel <Jens.Oehlschlaegel@truecluster.com>

Details

see ramsort

See Also

ramsort for the generic, ramsort.default for the methods provided by package ff, sort.integer64 for the sort interface and sortcache for caching the work of sorting

Examples

Run this code
  x <- as.integer64(sample(c(rep(NA, 9), 1:9), 32, TRUE))
  x
  message("ramsort example")
  s <- clone(x)
  ramsort(s)
  message("s has been changed in-place - whether or not ramsort uses an in-place algorithm")
  s
  message("ramorder example")
  s <- clone(x)
  o <- seq_along(s)
  ramorder(s, o)
  message("o has been changed in-place - s remains unchanged")
  s
  o
  s[o]
  message("ramsortorder example")
  o <- seq_along(s)
  ramsortorder(s, o)
  message("s and o have both been changed in-place - this is much faster")
  s
  o

Run the code above in your browser using DataLab