dsyMatrix-class: Symmetric Dense (Packed or Unpacked) Numeric Matrices

dsyMatrix-classR Documentation

Symmetric Dense (Packed or Unpacked) Numeric Matrices


  • The "dsyMatrix" class is the class of symmetric, dense matrices in non-packed storage and

  • "dspMatrix" is the class of symmetric dense matrices in packed storage, see pack(). Only the upper triangle or the lower triangle is stored.

Objects from the Class

Objects can be created by calls of the form new("dsyMatrix", ...) or new("dspMatrix", ...), respectively.



Object of class "character". Must be either "U", for upper triangular, and "L", for lower triangular.


Object of class "numeric". The numeric values that constitute the matrix, stored in column-major order.


The dimension (a length-2 "integer") and corresponding names (or NULL), see the Matrix.


Object of class "list". A named list of factorizations that have been computed for the matrix.


"dsyMatrix" extends class "dgeMatrix", directly, whereas
"dspMatrix" extends class "ddenseMatrix", directly.

Both extend class "symmetricMatrix", directly, and class "Matrix" and others, indirectly, use showClass("dsyMatrix"), e.g., for details.



signature(x = "dspMatrix", type = "character"), or x = "dsyMatrix" or type = "missing": Computes the matrix norm of the desired type, see, norm.


signature(x = "dspMatrix", type = "character"), or x = "dsyMatrix" or type = "missing": Computes the reciprocal condition number, rcond().


signature(a = "dspMatrix", b = "...."), and


signature(a = "dsyMatrix", b = "...."): x <- solve(a,b) solves A x = b for x; see solve-methods.


signature(x = "dsyMatrix"): Transpose; swaps from upper triangular to lower triangular storage, i.e., the uplo slot from "U" to "L" or vice versa, the same as for all symmetric matrices.

See Also

The positive (Semi-)definite dense (packed or non-packed numeric matrix classes dpoMatrix, dppMatrix and corMatrix,

Classes dgeMatrix and Matrix; solve, norm, rcond, t


## Only upper triangular part matters (when uplo == "U" as per default)
(sy2 <- new("dsyMatrix", Dim = as.integer(c(2,2)), x = c(14, NA,32,77)))
str(t(sy2)) # uplo = "L", and the lower tri. (i.e. NA is replaced).

chol(sy2) #-> "Cholesky" matrix
(sp2 <- pack(sy2)) # a "dspMatrix"

## Coercing to dpoMatrix gives invalid object:
sy3 <- new("dsyMatrix", Dim = as.integer(c(2,2)), x = c(14, -1, 2, -7))
try(as(sy3, "dpoMatrix")) # -> error: not positive definite

## 4x4 example
m <- matrix(0,4,4); m[upper.tri(m)] <- 1:6
(sym <- m+t(m)+diag(11:14, 4))
(S1 <- pack(sym))
(S2 <- t(S1))
stopifnot(all(S1 == S2)) # equal "seen as matrix", but differ internally :

Matrix documentation built on Nov. 14, 2023, 5:06 p.m.