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


R nsparseMatrix-classes 稀疏“模式”矩陣

R語言 nsparseMatrix-classes 位於 Matrix 包(package)。

說明

nsparseMatrix 類是稀疏 “pattern” 矩陣的虛擬類,即概念上具有 TRUE /FALSE 條目的二元矩陣。僅存儲 TRUE 元素的位置。

這些可以以 “triplet” 形式存儲( TsparseMatrix ,子類 ngTMatrixnsTMatrixntTMatrix ,它們實際上包含對,而不是三元組)或壓縮的 column-oriented 形式(類 CsparseMatrix ,子類) ngCMatrixnsCMatrixntCMatrix ) or-rarely-in 壓縮 row-oriented 形式(類 RsparseMatrix 、子類 ngRMatrixnsRMatrixntRMatrix ) 。這些非虛擬類名稱中的第二個字母表示 g enral、s ymmetric 或 t riangular。

類中的對象

可以通過調用 new("ngCMatrix", ...) 等形式來創建對象。更常見的是,通過將數字稀疏矩陣強製轉換為模式形式來創建對象,以用於涉及稀疏矩陣的算法的符號分析階段。此類算法通常涉及兩個階段:確定結果中非零位置的符號階段和計算實際結果的數字階段。在符號階段,僅對任何操作數中非零元素的位置感興趣,因此數值稀疏矩陣可以被視為稀疏模式矩陣。

插槽

uplo

"character" 的對象。對於上三角,必須是"U",對於下三角,必須是"L"。存在於三角形和對稱類中,但不存在於普通類中。

diag

"character" 的對象。對於單位三角形(對角線全為 1),必須是 "U" ,對於非單位必須是 "N" 。當 diag"U" 時,不會顯式存儲隱式對角線元素。僅出現在三角班中。

p

"integer" 類指針對象,每列(行)一個,指向列中元素的初始(從零開始)索引。僅以壓縮column-oriented 和壓縮row-oriented 形式存在。

i

"integer" 的對象,長度為 nnzero(非零元素的數量)。這些是矩陣中每個 TRUE 元素的行號。所有其他元素均為 FALSE。僅以三元組和壓縮column-oriented 形式存在。

j

"integer" 的對象,長度為 nnzero(非零元素的數量)。這些是矩陣中每個 TRUE 元素的列號。所有其他元素均為 FALSE。僅以三元組和壓縮row-oriented 形式存在。

Dim

"integer" 類的對象 - 矩陣的維度。

方法

強製

signature(from = "dgCMatrix", to = "ngCMatrix") 以及許多類似的;通常你應該強製 "nsparseMatrix" (或 "nMatrix" )。請注意,對稀疏模式矩陣的強製會記錄所有潛在的非零條目,即顯式 (“non-structural”) 零被強製為 TRUE ,而不是 FALSE ,請參見示例。

t

signature(x = "ngCMatrix") :返回x 的轉置

哪一個

signature(x = "lsparseMatrix") ,語義上等同於 base 函數 which(x, arr.ind) ;有關詳細信息,請參閱lMatrix 類文檔。

例子


(m <- Matrix(c(0,0,2:0), 3,5, dimnames=list(LETTERS[1:3],NULL)))
## ``extract the nonzero-pattern of (m) into an nMatrix'':
nm <- as(m, "nsparseMatrix") ## -> will be a "ngCMatrix"
str(nm) # no 'x' slot
nnm <- !nm # no longer sparse
## consistency check:
stopifnot(xor(as( nm, "matrix"),
              as(nnm, "matrix")))

## low-level way of adding "non-structural zeros" :
nnm <- as(nnm, "lsparseMatrix") # "lgCMatrix"
nnm@x[2:4] <- c(FALSE, NA, NA)
nnm
as(nnm, "nMatrix") # NAs *and* non-structural 0  |--->  'TRUE'

data(KNex, package = "Matrix")
nmm <- as(KNex $ mm, "nMatrix")
str(xlx <- crossprod(nmm))# "nsCMatrix"
stopifnot(isSymmetric(xlx))
image(xlx, main=paste("crossprod(nmm) : Sparse", class(xlx)))

也可以看看

dgCMatrix

相關用法


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