Diagonal {Matrix} | R Documentation

## Create Diagonal Matrix Object

### Description

Create a diagonal matrix object, i.e., an object inheriting from `diagonalMatrix`.

### Usage

    Diagonal(n, x = NULL)
    .symDiagonal(n, x = rep.int(1,n), uplo = "U")

### Arguments

`n` | integer specifying the dimension of the (square) matrix. If missing, `length(x)` is used.
`x` | numeric or logical; if missing, a unit diagonal n x n matrix is created.
`uplo` | for `.symDiagonal`, the resulting sparse `symmetricMatrix` will have slot `uplo` set from this argument, either `"U"` or `"L"`. Only rarely will it make sense to change this from the default.

### Value

`Diagonal()` returns an object of class `ddiMatrix` or `ldiMatrix` (with “superclass” `diagonalMatrix`).
`.symDiagonal()` returns an object of class `dsCMatrix` or `lsCMatrix`, 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.

### See Also

the generic function `diag` for extraction of the diagonal from a matrix works for all “Matrices”.

`bandSparse` constructs a banded sparse matrix from its non-zero sub-/super - diagonals.

`Matrix` for general matrix construction; further, class `diagonalMatrix`.

### Examples

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

[Package Matrix version 0.999375-33 Index]