
Last chance! 50% off unlimited learning
Sale ends in
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.
# 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,
...
)
These functions return the number of NAs
found or assumed
during sorting
a vector to be sorted by ramsort.integer64()
and
ramsortorder.integer64()
, i.e. the output of sort.integer64()
boolean scalar defining whether the input vector might contain
NA
s. If we know we don't have NAs, this may speed-up. Note that you
risk a crash if there are unexpected NA
s with has.na=FALSE
boolean scalar telling ramsort whether to sort NA
s last
or first. Note that 'boolean' means that there is no third option NA
as in sort()
boolean scalar telling ramsort whether to sort increasing or decreasing
further arguments, passed from generics, ignored in methods
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()
number of remaining recursionlevels before quicksort
switches from recursing to shellsort
size of radix in bits
boolean scalar defining whether stable sorting is needed. Allowing non-stable may speed-up.
by default ramsort optimizes for 'time' which requires more RAM, set to 'memory' to minimize RAM requirements and sacrifice speed
cat some info about chosen method
See bit::ramsort()
bit::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
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