Learn R Programming

sfsmisc (version 1.1-19)

uniqueL: A Reversable Version of unique()

Description

A version of unique keeping enough information to reverse (or invert) to the original data.

Usage

uniqueL(x, isuniq = !duplicated(x), need.sort = is.unsorted(x))

Value

list of two components,

ix

integer vector of indices

xU

vector of values from x

such that both x[isuniq] === xU and xU[ix] === x.

Arguments

x

numeric vector, of length n, say.

isuniq

logical vector of the same length as x. For the reversion to work this should select at least all unique values of x.

need.sort

logical indicating if x is not yet sorted. Note that this argument exists only for speedup possibility when it is known, and that it must be set correctly.

Author

Martin Maechler

See Also

Duplicated from the sfsmisc package in addition to the standard unique and duplicated.

Examples

Run this code
 x0 <- c(1:3,2:7,8:4)
 str(r0 <- uniqueL(x0))
 with(r0, xU[ix]) ## == x0 !
# \dontshow{
 for(n in 1:100) {
   x0 <- round((1+rpois(1,lam=1))*rnorm(40))
   r0 <- uniqueL(x0)
   stopifnot(sort(unique(x0)) == r0$xU,
	     with(r0, xU[ix]) == x0)
 }
# }

Run the code above in your browser using DataLab