Last chance! 50% off unlimited learning
Sale ends in
From a permutation vector p
, compute its inverse
permutation vector.
invPerm(p, zero.p = FALSE, zero.res = FALSE)
an integer vector of length, say, n
.
logical indicating if p
contains values
0:(n-1)
or rather (by default, zero.p = FALSE
) 1:n
.
logical indicating if the result should contain values
0:(n-1)
or rather (by default, zero.res = FALSE
) 1:n
.
an integer vector of the same length (n
) as p
.
By default, (zero.p = FALSE, zero.res = FALSE
),
invPerm(p)
is the same as order(p)
or
sort.list(p)
and for that case, the function is
equivalent to invPerm. <- function(p) { p[p] <- seq_along(p) ; p }
.
# NOT RUN {
p <- sample(10) # a random permutation vector
ip <- invPerm(p)
p[ip] # == 1:10
## they are indeed inverse of each other:
stopifnot(
identical(p[ip], 1:10),
identical(ip[p], 1:10),
identical(invPerm(ip), p)
)
# }
Run the code above in your browser using DataLab