diagonalMatrix
.Diagonal(n, x = NULL).symDiagonal(n, x = rep.int(1,n), uplo = "U")
.sparseDiagonal(n, x = rep.int(1,m), uplo = "U",
shape = if(missing(cols)) "t" else "g",
kind, cols = if(n) 0:(n - 1L) else integer(0))
length(x)
is used..symDiagonal
, the resulting sparse
symmetricMatrix
will have slot uplo
set
from this argument, either "U"
or "L"
. Only rarely
will it make sense tc("t","s","g")
, to
chose a triangular, symmetric or general result matrix.c("d","l","n")
, to
chose the storage mode of the result, from classes
dsparseMatrix
,
lsparseMatrix
, or
0:(n-1)
, denoting
the columns to subselect conceptually, i.e., get the
equivalent of Diagonal(n,*)[, cols + 1]
.Diagonal()
returns an object of class
ddiMatrix
or ldiMatrix
(with diagonalMatrix
). .symDiagonal()
returns an object of class
or
,
i.e., a sparse symmetric matrix. This can be
more efficient than Diagonal(n)
when the result is combined
with further symmetric (sparse) matrices, however not for
matrix multiplications where Diagonal()
is clearly preferred.
.sparseDiagonal()
, the workhorse of .symDiagonal
returns
a
(the resulting class depending
on shape
and kind
) representation of Diagonal(n)
,
or, when cols
are specified, of Diagonal(n)[, cols+1]
.
diag
for extraction
of the diagonal from a matrix works for all bandSparse
constructs a banded sparse matrix from
its non-zero sub-/super - diagonals.
Matrix
for general matrix construction;
further, class
.
Diagonal(3)
Diagonal(x = 10^(3:1))
Diagonal(x = (1:4) >= 2)#-> "ldiMatrix"
## Use Diagonal() + kronecker() for "repeated-block" matrices:
M1 <- Matrix(0+0:5, 2,3)
(M <- kronecker(Diagonal(3), M1))
(S <- crossprod(Matrix(rbinom(60, size=1, prob=0.1), 10,6)))
(SI <- S + 10*.symDiagonal(6)) # sparse symmetric still
stopifnot(is(SI, "dsCMatrix"))
Run the code above in your browser using DataLab