当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R boolmatmult-methods 布尔算术矩阵乘积:%&% 和方法


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)。

当前的实现最终将 xy 强制转换为(虚拟)类 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-devel大神的英文原创作品 Boolean Arithmetic Matrix Products: %&% and Methods。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。