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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。