Learn R Programming

Matrix (version 1.4-1)

invPerm: Inverse Permutation Vector

Description

From a permutation vector p, compute its inverse permutation vector.

Usage

invPerm(p, zero.p = FALSE, zero.res = FALSE)

Value

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 }.

Arguments

p

an integer vector of length, say, n.

zero.p

logical indicating if p contains values 0:(n-1) or rather (by default, zero.p = FALSE) 1:n.

zero.res

logical indicating if the result should contain values 0:(n-1) or rather (by default, zero.res = FALSE) 1:n.

Author

Martin Maechler

See Also

the class of permutation matrices, pMatrix.

Examples

Run this code
  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)
  )
# \dontshow{
 p3 <- c(3, 1:2) # ('double' instead of integer)
 stopifnot(identical(invPerm(p3), c(2:3, 1L)))
# }

Run the code above in your browser using DataLab