R: isTriangular() and isDiagonal() Methods

isTriangular {Matrix} | R Documentation

## isTriangular() and isDiagonal() Methods

### Description

`isTriangular(M)` returns a `logical` indicating if `M` is a triangular matrix. Analogously, `isDiagonal(M)` is true iff `M` is a diagonal matrix.

Contrary to `isSymmetric()`, these two functions are generically from package Matrix, and hence also define methods for traditional (`class` `"matrix"`) matrices.

By our definition, triangular, diagonal and symmetric matrices are all square, i.e. have the same number of rows and columns.

### Usage

    isDiagonal(object)

    isTriangular(object, upper = NA, ...)

### Arguments

`object` | any R object, typically a matrix (traditional or Matrix package).
`upper` | logical, one of `NA` (default), `FALSE`, or `TRUE` where the last two cases require a lower or upper triangular `object` to result in `TRUE`.
`...` | potentially further arguments for other methods.

### Value

a (“scalar”) logical, `TRUE` or `FALSE`, never `NA`. For `isTriangular()`, if the result is `TRUE`, it may contain an attribute (see `attributes` `"kind"`, either `"L"` or `"U"` indicating if it is a lower or upper triangular matrix.

### See Also

`isSymmetric`; formal class (and subclasses) `"triangularMatrix"` and `"diagonalMatrix"`.

### Examples

    isTriangular(Diagonal(4))
    ## is TRUE: a diagonal matrix is also (both upper and lower) triangular
    (M <- Matrix(c(1,2,0,1), 2,2))
    isTriangular(M) # TRUE (*and* of formal class "dtrMatrix")
    isTriangular(as(M, "dgeMatrix")) # still triangular, even if not "formally"
    isTriangular(crossprod(M)) # FALSE

    isDiagonal(matrix(c(2,0,0,1), 2,2)) # TRUE

[Package Matrix version 1.2-12 Index]