當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。