當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R invertPerm 排列向量的實用程序


R語言 invertPerm 位於 Matrix 包(package)。

說明

invertPermsignPerm 計算長度-n 排列向量的倒數和符號。 isPerm 測試長度為 n 的整數向量是否是有效的排列向量。 asPerm 將長度 m 轉置向量強製轉換為長度 n 置換向量,其中 m <= n

用法

invertPerm(p, off = 1L, ioff = 1L)
signPerm(p, off = 1L)
isPerm(p, off = 1L)
asPerm(pivot, off = 1L, ioff = 1L, n = length(pivot))

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

參數

p

長度為 n 的整數向量。

pivot

長度為 m 的整數向量。

off

整數偏移量,指示 poff+0:(n-1) 的排列,或者 pivot 包含從 off+0:(n-1) 替換采樣的 m 值。

ioff

整數偏移量,指示結果應該是 ioff+0:(n-1) 的排列。

n

大於或等於 m 的整數,表示結果的長度。轉置應用於初始化為 seq_len(n) 的置換向量。

zero.p

一個合乎邏輯的。相當於 off=0 if TRUEoff=1 if FALSE

zero.res

一個合乎邏輯的。相當於 ioff=0 if TRUEioff=1 if FALSE

細節

對於 off 的所有值,invertPerm(p, off, ioff=1) 相當於 order(p)sort.list(p)。對於默認值 off=1 ,它返回 p[p] <- seq_along(p) 之後的 p 的值。

invPerminvertPerm 的簡單包裝器,保留用於向後兼容。

默認情況下,即使用 off=1ioff=1

invertPerm(p) 返回長度為 length(p) 的整數向量,使得 p[invertPerm(p)]invertPerm(p)[p] 都是 seq_along(p) ,即恒等排列。

如果 p 是偶數排列,signPerm(p) 返回 1,否則 -1 返回 1(即,如果 p 是奇數)。

如果pseq_along(p) 的排列,則isPerm(p) 返回TRUE,否則返回FALSE

asPerm(pivot) 返回初始化為 seq_len(n) 的置換向量的元素 ipivot[i] 的轉置結果,對於 seq_along(pivot) 中的 i

例子

p <- sample(10L) # a random permutation vector
ip <- invertPerm(p)
s <- signPerm(p)

## 'p' and 'ip' are indeed inverses:
stopifnot(exprs = {
    isPerm(p)
    isPerm(ip)
    identical(s, 1L) || identical(s, -1L)
    identical(s, signPerm(ip))
    identical(p[ip], 1:10)
    identical(ip[p], 1:10)
    identical(invertPerm(ip), p)
})

## Product of transpositions (1 2)(2 1)(4 3)(6 8)(10 1) = (3 4)(6 8)(1 10)
pivot <- c(2L, 1L, 3L, 3L, 5L, 8L, 7L, 8L, 9L, 1L)
q <- asPerm(pivot)
stopifnot(exprs = {
    identical(q, c(10L, 2L, 4L, 3L, 5L, 8L, 7L, 6L, 9L, 1L))
    identical(q[q], seq_len(10L)) # because the permutation is odd:
    signPerm(q) == -1L
})

invPerm # a less general version of 'invertPerm'

也可以看看

置換矩陣的pMatrix 類。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Utilities for Permutation Vectors。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。