lsparseMatrix-classes
位於 Matrix
包(package)。 說明
lsparseMatrix
類是具有 TRUE
/FALSE
或 NA
條目的稀疏矩陣的虛擬類。僅存儲 TRUE
元素的位置。
這些可以以 “triplet” 形式(類 TsparseMatrix
、子類 lgTMatrix
、lsTMatrix
和 ltTMatrix
)或壓縮的 column-oriented 形式(類 CsparseMatrix
、子類 lgCMatrix
、 lsCMatrix
和 ltCMatrix
) or-rarely-in 壓縮的 row-oriented 形式(類 RsparseMatrix
、子類 lgRMatrix
、 lsRMatrix
和 ltRMatrix
)。這些非虛擬類名稱中的第二個字母表示 g
enral、s
ymmetric 或 t
riangular。
細節
請注意,三元組存儲(TsparseMatrix
)矩陣(例如lgTMatrix
)可能包含重複的索引對 ,對於相應的數字類dgTMatrix
,其中對於此類對,添加了相應的x
槽條目。對於邏輯矩陣,如果加法被定義為邏輯 ,即“TRUE + TRUE |-> TRUE
”和“TRUE + FALSE |-> TRUE
”,則與重複索引對 對應的x
條目也是“added”。請注意,使用 uniqTsparse()
來獲取內部唯一的表示,而無需重複的 條目。
類中的對象
可以通過調用 new("lgCMatrix",
...)
等形式來創建對象。更常見的是,對象是通過將數字稀疏矩陣強製轉換為邏輯形式來創建的,例如在表達式 x != 0
中。
邏輯形式還用於涉及稀疏矩陣的算法的符號分析階段。此類算法通常涉及兩個階段:確定結果中非零位置的符號階段和計算實際結果的數字階段。在符號階段,僅對任何操作數中非零元素的位置感興趣,因此任何數值稀疏矩陣都可以被視為邏輯稀疏矩陣。
插槽
x
:-
類
"logical"
的對象,即TRUE
、NA
或FALSE
。 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 = "lgCMatrix")
- t
-
signature(x = "lgCMatrix")
:返回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)))
(lm <- (m > 1)) # lgC
!lm # no longer sparse
stopifnot(is(lm,"lsparseMatrix"),
identical(!lm, m <= 1))
data(KNex, package = "Matrix")
str(mmG.1 <- (KNex $ mm) > 0.1)# "lgC..."
table(mmG.1@x)# however with many ``non-structural zeros''
## from logical to nz_pattern -- okay when there are no NA's :
nmG.1 <- as(mmG.1, "nMatrix") # <<< has "TRUE" also where mmG.1 had FALSE
## from logical to "double"
dmG.1 <- as(mmG.1, "dMatrix") # has '0' and back:
lmG.1 <- as(dmG.1, "lMatrix")
stopifnot(identical(nmG.1, as((KNex $ mm) != 0,"nMatrix")),
validObject(lmG.1),
identical(lmG.1, mmG.1))
class(xnx <- crossprod(nmG.1))# "nsC.."
class(xlx <- crossprod(mmG.1))# "dsC.." : numeric
is0 <- (xlx == 0)
mean(as.vector(is0))# 99.3% zeros: quite sparse, but
table(xlx@x == 0)# more than half of the entries are (non-structural!) 0
stopifnot(isSymmetric(xlx), isSymmetric(xnx),
## compare xnx and xlx : have the *same* non-structural 0s :
sapply(slotNames(xnx),
function(n) identical(slot(xnx, n), slot(xlx, n))))
也可以看看
相關用法
- R lsyMatrix-class 對稱密集邏輯矩陣
- R ltrMatrix-class 三角密集邏輯矩陣
- R ldenseMatrix-class 密集邏輯矩陣的虛擬類“ldenseMatrix”
- R lgeMatrix-class 一般稠密邏輯矩陣的“lgeMatrix”類
- R lu-methods LU 分解的方法
- R ldiMatrix-class 對角邏輯矩陣的“ldiMatrix”類
- R dtrMatrix-class 三角形稠密數值矩陣
- R facmul-methods 乘以矩陣因式分解的因數
- R solve-methods 函數求解矩陣包中的方法
- R updown-methods 更新和降級稀疏 Cholesky 分解
- R bdiag 構建分塊對角矩陣
- R printSpMatrix 靈活格式化和打印稀疏矩陣
- R symmetricMatrix-class 包矩陣中對稱矩陣的虛擬類
- R all.equal-methods 函數 all.equal() 的矩陣封裝方法
- R boolmatmult-methods 布爾算術矩陣乘積:%&% 和方法
- R Hilbert 生成希爾伯特矩陣
- R nearPD 最近正定矩陣
- R CHMfactor-class 稀疏 Cholesky 分解
- R symmpart-methods 矩陣的對稱部分和偏斜(對稱)部分
- R sparseMatrix 從非零項構建一般稀疏矩陣
- R dgCMatrix-class 壓縮、稀疏、麵向列的數值矩陣
- R Cholesky-methods Cholesky 分解方法
- R Subassign-methods “[<-”的方法 - 分配給“矩陣”的子集
- R norm-methods 矩陣範數
- R ngeMatrix-class 一般密集非零模式矩陣的“ngeMatrix”類
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Sparse logical matrices。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。