R語言
boolmatmult-methods
位於 Matrix
包(package)。 說明
對於布爾值或“模式”n” 矩陣,即R類的對象nMatrix
,很自然地允許矩陣乘積使用布爾值而不是數值算術。
包裝內Matrix
,我們使用二元運算符%&%
(又名“infix”)函數)為此並為我們所有的矩陣和傳統矩陣提供方法R矩陣(參見matrix
)。
值
模式矩陣,即繼承自 "nMatrix"
,或者在對角矩陣的情況下繼承 "ldiMatrix"
。
方法
我們為“traditional”(R基)矩陣和數值向量以及概念上所有矩陣和sparseVector
包裝內有Matrix
.
signature(x = "ANY", y = "ANY")
signature(x = "ANY", y = "Matrix")
signature(x = "Matrix", y = "ANY")
signature(x = "mMatrix", y = "mMatrix")
signature(x = "nMatrix", y = "nMatrix")
signature(x = "nMatrix", y = "nsparseMatrix")
signature(x = "nsparseMatrix", y = "nMatrix")
signature(x = "nsparseMatrix", y = "nsparseMatrix")
signature(x = "sparseVector", y = "mMatrix")
signature(x = "mMatrix", y = "sparseVector")
signature(x = "sparseVector", y = "sparseVector")
注意
這些布爾算術矩陣產品是 Matrix
1.2.0(2015 年 3 月)新引入的。其實施尚未經過廣泛測試。
最初,未指定非結構零點,即0
是作為M@x
插槽應被視為數字("dMatrix"
) 和邏輯 ("lMatrix"
) 稀疏矩陣。我們現在指定布爾矩陣乘積的行為應該就像應用於drop0(M)
,即,就好像在使用矩陣之前從矩陣中刪除這些零一樣。
等價地,對於所有矩陣M
,布爾算術應該像應用於M != 0
(或者M != FALSE
)。
當前的實現最終將 x
和 y
強製轉換為(虛擬)類 nsparseMatrix
,這對於密集矩陣來說可能非常低效。未來的實現很可能返回具有不同類別的矩陣,但 “same” 內容,即相同的矩陣條目 。
例子
set.seed(7)
L <- Matrix(rnorm(20) > 1, 4,5)
(N <- as(L, "nMatrix"))
L. <- L; L.[1:2,1] <- TRUE; L.@x[1:2] <- FALSE; L. # has "zeros" to drop0()
D <- Matrix(round(rnorm(30)), 5,6) # -> values in -1:1 (for this seed)
L %&% D
stopifnot(identical(L %&% D, N %&% D),
all(L %&% D == as((L %*% abs(D)) > 0, "sparseMatrix")))
## cross products , possibly with boolArith = TRUE :
crossprod(N) # -> sparse patter'n' (TRUE/FALSE : boolean arithmetic)
crossprod(N +0) # -> numeric Matrix (with same "pattern")
stopifnot(all(crossprod(N) == t(N) %&% N),
identical(crossprod(N), crossprod(N +0, boolArith=TRUE)),
identical(crossprod(L), crossprod(N , boolArith=FALSE)))
crossprod(D, boolArith = TRUE) # pattern: "nsCMatrix"
crossprod(L, boolArith = TRUE) # ditto
crossprod(L, boolArith = FALSE) # numeric: "dsCMatrix"
也可以看看
%*%
、 crossprod()
或 tcrossprod()
,用於(常規)矩陣乘積方法。
相關用法
- R bdiag 構建分塊對角矩陣
- R bandSparse 從(上/上)對角線構造稀疏帶狀矩陣
- R band-methods 提取矩陣的帶
- R dtrMatrix-class 三角形稠密數值矩陣
- R facmul-methods 乘以矩陣因式分解的因數
- R solve-methods 函數求解矩陣包中的方法
- R updown-methods 更新和降級稀疏 Cholesky 分解
- R printSpMatrix 靈活格式化和打印稀疏矩陣
- R symmetricMatrix-class 包矩陣中對稱矩陣的虛擬類
- R all.equal-methods 函數 all.equal() 的矩陣封裝方法
- R ltrMatrix-class 三角密集邏輯矩陣
- R Hilbert 生成希爾伯特矩陣
- R nearPD 最近正定矩陣
- R lsyMatrix-class 對稱密集邏輯矩陣
- R CHMfactor-class 稀疏 Cholesky 分解
- R symmpart-methods 矩陣的對稱部分和偏斜(對稱)部分
- R sparseMatrix 從非零項構建一般稀疏矩陣
- R dgCMatrix-class 壓縮、稀疏、麵向列的數值矩陣
- R Cholesky-methods Cholesky 分解方法
- R Subassign-methods “[<-”的方法 - 分配給“矩陣”的子集
- R ldenseMatrix-class 密集邏輯矩陣的虛擬類“ldenseMatrix”
- R norm-methods 矩陣範數
- R ngeMatrix-class 一般密集非零模式矩陣的“ngeMatrix”類
- R CAex 阿爾伯斯的示例矩陣與“困難”特征分解
- R diagonalMatrix-class 對角矩陣的“diagonalMatrix”類
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Boolean Arithmetic Matrix Products: %&% and Methods。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。