symmetricMatrix-class {Matrix} | R Documentation |

## Virtual Class of Symmetric Matrices in Package Matrix

### Description

The virtual class of symmetric matrices, `"symmetricMatrix"`

,
from the package Matrix contains numeric and logical, dense and
sparse matrices, e.g., see the examples with the “actual”
subclasses.

The main use is in methods (and C functions) that can deal with
all symmetric matrices, and in `as(*, "symmetricMatrix")`

.

### Slots

`uplo`

:Object of class `"character"`

. Must be
either "U", for upper triangular, and "L", for lower triangular.

`Dim, Dimnames`

:The dimension (a length-2
`"integer"`

) and corresponding names (or `NULL`

),
inherited from the `Matrix`

, see there. See below,
about storing only one of the two `Dimnames`

components.

`factors`

:a list of matrix factorizations, also from the
`Matrix`

class.

### Extends

Class `"Matrix"`

, directly.

### Methods

- coerce
```
signature(from = "ddiMatrix", to =
"symmetricMatrix")
```

: and many other coercion methods, some of
which are particularly optimized.

- dimnames
`signature(object = "symmetricMatrix")`

:
returns *symmetric* `dimnames`

, even when the
`Dimnames`

slot only has row or column names. This allows to
save storage for large (typically sparse) symmetric matrices.

- isSymmetric
`signature(object = "symmetricMatrix")`

:
returns `TRUE`

trivially.

There's a C function `symmetricMatrix_validate()`

called by the internal validity checking functions, and also from
`getValidity(getClass("symmetricMatrix"))`

.

The validity checks do not require a symmetric `Dimnames`

slot,
so it can be `list(NULL, <character>)`

, e.g., for efficiency.
However, `dimnames()`

and other functions and methods
should behave as if the dimnames were symmetric, i.e., with both list
components identical.

### See Also

`isSymmetric`

which has efficient methods
(isSymmetric-methods) for the Matrix classes.
Classes `triangularMatrix`

, and, e.g.,
`dsyMatrix`

for numeric *dense* matrices, or
`lsCMatrix`

for a logical *sparse* matrix class.

### Examples

## An example about the symmetric Dimnames:
sy <- sparseMatrix(i= c(2,4,3:5), j= c(4,7:5,5), x = 1:5, dims = c(7,7),
symmetric=TRUE, dimnames = list(NULL, letters[1:7]))
sy # shows symmetrical dimnames
sy@Dimnames # internally only one part is stored
dimnames(sy) # both parts - as sy *is* symmetrical
showClass("symmetricMatrix")
## The names of direct subclasses:
scl <- getClass("symmetricMatrix")@subclasses
directly <- sapply(lapply(scl, slot, "by"), length) == 0
names(scl)[directly]
## Methods -- applicaple to all subclasses above:
showMethods(classes = "symmetricMatrix")

[Package

*Matrix* version 1.2-17

Index]