R: Virtual Class of Symmetric Matrices in Package Matrix

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

### Validity and `dimnames`

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.3-4 Index]