For a permutation p build q such that p[q] == q[p] == seq_len(length(p)). Please see https://win-vector.com/2017/05/18/on-indexing-operators-and-composition/ and https://win-vector.com/2017/09/02/permutation-theory-in-action/.

invert_perm(p)

Arguments

p

vector of length n containing each of seq_len(n) exactly once.

Value

vector q such that p[q] == q[p] == seq_len(length(p))

Examples


p <- c(4, 5, 7, 8, 9, 6, 1, 3, 2, 10)
q <- invert_perm(p)
p[q]
#>  [1]  1  2  3  4  5  6  7  8  9 10
all.equal(p[q], seq_len(length(p)))
#> [1] TRUE
q[p]
#>  [1]  1  2  3  4  5  6  7  8  9 10
all.equal(q[p], seq_len(length(p)))
#> [1] TRUE