This function returns the kth smallest, resp. largest values from a vector x.
Usage
Small(x, k = 5, unique = FALSE, na.last = NA)
Large(x, k = 5, unique = FALSE, na.last = NA)
Arguments
x
a numeric vector
k
an integer >0 defining how many extreme values should be returned. Default is k = 5. If k > length(x), all values will be returned.
unique
logical, defining if unique values should be considered or not. If this is set to TRUE, a list with the k extreme values and their frequencies is returned. Default is FALSE (as unique is a rather expensive function).
na.last
for controlling the treatment of NAs.
If TRUE, missing values in the data are put last; if
FALSE, they are put first; if NA, they are removed.
Value
unique is set to FALSE
or a list, containing the k most extreme values and their respective frequency.
Details
There are several points of this problem discussed out there. This implementation is based on effective C++ code, which is quite fast.
x <- sample(1:10, 1000, rep=TRUE)
Large(x, 3)
Large(x, k=3, unique=TRUE)
# works fine up to x ~ 1e6x <- runif(1000000)
Small(x, 3, unique=TRUE)
Small(x, 3, unique=FALSE)