R: Inverse Permutation Vector

invPerm {Matrix} | R Documentation

## Inverse Permutation Vector

### Description

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

### Usage

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

### 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`.

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

### Author(s)

Martin Maechler

### See Also

the class of permutation matrices, `pMatrix`.

### Examples

      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)
      )

[Package Matrix version 1.4-1 Index]