Sorting: sort an ff vector -- optionally in-place
ffsort(x
, aux = NULL
, has.na = TRUE
, na.last = TRUE
, decreasing = FALSE
, inplace = FALSE
, decorate = FALSE
, BATCHBYTES = getOption("ffmaxbytes")
, VERBOSE = FALSE
)
an ff vector
NULL or an ff vector of the same type for temporary storage
boolean scalar telling ffsort whether the vector might contain NA
s.
Note that you risk a crash if there are unexpected NA
s with has.na=FALSE
boolean scalar telling ffsort 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 ffsort whether to sort increasing or decreasing
boolean scalar telling ffsort whether to sort the original ff vector (TRUE
)
or to create a sorted copy (FALSE
, the default)
maximum number of RAM bytes ffsort should try not to exceed
cat some info about the sorting
An ff vector -- optionally decorated with is.sorted
and na.count
, see argument 'decorate'
ffsort tries to sort the vector in-RAM respecting the BATCHBYTES limit.
If a fast sort it not possible, it uses a slower in-place sort (shellsort).
If in-RAM is not possible, it uses (a yet simple) out-of-memory algorithm.
Like ramsort
the in-RAM sorting method is choosen depending on context information.
If a key-index sort can be used, ffsort completely avoids merging disk based subsorts.
If argument decorate=TRUE
is used, then na.count(x)
will return the number of NAs
and is.sorted(x)
will return TRUE if the sort was done with na.last=TRUE
and decreasing=FALSE
.
# NOT RUN {
n <- 1e6
x <- ff(c(NA, 999999:1), vmode="double", length=n)
x <- ffsort(x)
x
is.sorted(x)
na.count(x)
x <- ffsort(x, decorate=TRUE)
is.sorted(x)
na.count(x)
x <- ffsort(x, BATCHBYTES=n, VERBOSE=TRUE)
# }
Run the code above in your browser using DataLab