unipos {bit64} | R Documentation |
Extract Positions of Unique Elements
Description
unipos
returns the positions of those elements returned by unique()
.
Usage
unipos(x, incomparables = FALSE, order = c("original", "values", "any"), ...)
## S3 method for class 'integer64'
unipos(
x,
incomparables = FALSE,
order = c("original", "values", "any"),
nunique = NULL,
method = NULL,
...
)
Arguments
x |
a vector or a data frame or an array or |
incomparables |
ignored |
order |
The order in which positions of unique values will be returned, see details |
... |
ignored |
nunique |
NULL or the number of unique values (including NA). Providing
|
method |
NULL for automatic method selection or a suitable low-level method, see details |
Details
This function automatically chooses from several low-level functions
considering the size of x
and the availability of a cache.
Suitable methods are
-
hashmapupo
(simultaneously creating and using a hashmap) -
hashupo
(first creating a hashmap then using it) -
sortorderupo
(fast ordering) -
orderupo
(memory saving ordering).
The default order="original"
collects unique values in the order of
the first appearance in x
like in unique()
, this costs extra processing.
order="values"
collects unique values in sorted order like in table()
,
this costs extra processing with the hash methods but comes for free.
order="any"
collects unique values in undefined order, possibly faster.
For hash methods this will be a quasi random order, for sort methods this
will be sorted order.
Value
an integer vector of positions
See Also
unique.integer64()
for unique values and match.integer64()
for general matching.
Examples
x <- as.integer64(sample(c(rep(NA, 9), 1:9), 32, TRUE))
unipos(x)
unipos(x, order="values")
stopifnot(identical(unipos(x), (1:length(x))[!duplicated(x)]))
stopifnot(identical(unipos(x), match.integer64(unique(x), x)))
stopifnot(identical(unipos(x, order="values"), match.integer64(unique(x, order="values"), x)))
stopifnot(identical(unique(x), x[unipos(x)]))
stopifnot(identical(unique(x, order="values"), x[unipos(x, order="values")]))