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


R Matrix 构建分类矩阵


R语言 Matrix 位于 Matrix 包(package)。

说明

构造继承自 Matrix 的类的 Matrix。

用法

Matrix(data=NA, nrow=1, ncol=1, byrow=FALSE, dimnames=NULL,
       sparse = NULL, doDiag = TRUE, forceCheck = FALSE)

参数

data

可选的数值数据向量或矩阵。

nrow

data不是矩阵时,所需的行数

ncol

data不是矩阵时,所需的列数

byrow

合乎逻辑的。如果FALSE(默认)则矩阵按列填充,否则矩阵按行填充。

dimnames

矩阵的 dimnames 属性:两个字符组件的 list。如果不是 NULL(默认情况下),则设置它们。

sparse

逻辑或 NULL ,指定结果是否应该稀疏。默认情况下,当超过一半的条目为 0 时,它会变得稀疏。

doDiag

逻辑指示当结果矩阵是对角线(数学上)时是否应返回 diagonalMatrix 对象。作为类 diagonalMatrix extends sparseMatrix ,这是 sparse 所有值的自然默认值。

否则,如果 doDiag 为 false,则将返回密集或稀疏(取决于 sparse )对称矩阵。

forceCheck

逻辑指示当 data 已经是 "Matrix" 对象时是否应该进行结构检查。

细节

如果nrowncol 未给出,则尝试从data 和其他参数的长度推断它。此外,Matrix() 努力保持 logical 矩阵的逻辑性,即从类 lMatrix 继承,并确定特殊结构的矩阵,例如对称、三角形或对角矩阵。请注意,对称矩阵还需要对称 dimnames ,例如,通过指定 dimnames = list(NULL,NULL) ,请参阅示例。

大多数时候,该函数通过传统(完整)matrix 工作。但是, Matrix(0, nrow,ncol) 直接构造 “empty” sparseMatrix ,就像 Matrix(FALSE, *) 一样。

尽管有时可以将未分类矩阵(使用 matrix 创建)与 "Matrix" 类矩阵混合,但始终使用精心构造的 "Matrix" 类矩阵要安全得多。

返回继承自 "Matrix" 的类的矩阵。仅当 data 不是 matrix 并且尚未从类 Matrix 继承时,才会使用参数 nrowncolbyrow

例子


Matrix(0, 3, 2)             # 3 by 2 matrix of zeros -> sparse
Matrix(0, 3, 2, sparse=FALSE)# -> 'dense'

## 4 cases - 3 different results :
Matrix(0, 2, 2)              # diagonal !
Matrix(0, 2, 2, sparse=FALSE)# (ditto)
Matrix(0, 2, 2,               doDiag=FALSE)# -> sparse symm. "dsCMatrix"
Matrix(0, 2, 2, sparse=FALSE, doDiag=FALSE)# -> dense  symm. "dsyMatrix"

Matrix(1:6, 3, 2)           # a 3 by 2 matrix (+ integer warning)
Matrix(1:6 + 1, nrow=3)

## logical ones:
Matrix(diag(4) >  0) # -> "ldiMatrix" with diag = "U"
Matrix(diag(4) >  0, sparse=TRUE) #  (ditto)
Matrix(diag(4) >= 0) # -> "lsyMatrix" (of all 'TRUE')
## triangular
l3 <- upper.tri(matrix(,3,3))
(M <- Matrix(l3))   # -> "ltCMatrix"
Matrix(! l3)        # -> "ltrMatrix"
as(l3, "CsparseMatrix")# "lgCMatrix"

Matrix(1:9, nrow=3,
       dimnames = list(c("a", "b", "c"), c("A", "B", "C")))
(I3 <- Matrix(diag(3)))# identity, i.e., unit "diagonalMatrix"
str(I3) # note  'diag = "U"' and the empty 'x' slot

(A <- cbind(a=c(2,1), b=1:2))# symmetric *apart* from dimnames
Matrix(A)                    # hence 'dgeMatrix'
(As <- Matrix(A, dimnames = list(NULL,NULL)))# -> symmetric
forceSymmetric(A) # also symmetric, w/ symm. dimnames
stopifnot(is(As, "symmetricMatrix"),
          is(Matrix(0, 3,3), "sparseMatrix"),
          is(Matrix(FALSE, 1,1), "sparseMatrix"))

也可以看看

MatrixsymmetricMatrixtriangularMatrixdiagonalMatrix ;此外,matrix

可以构造特殊矩阵,例如通过 sparseMatrix (稀疏)、bdiag (block-diagonal)、bandSparse (带状稀疏)或 Diagonal

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Construct a Classed Matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。