Skip to contents

check_diagonal() and check_is_diagonal() verify whether a given matrix is diagonal. check_diagonal() raises an error if the matrix is not diagonal, while check_is_diagonal() returns TRUE if the matrix is diagonal and FALSE otherwise.

Usage

check_diagonal(mat, par_name = "mat")

check_is_diagonal(mat)

Arguments

mat

A matrix to check if it is diagonal.

par_name

An optional name of the parameter to display in error messages.

Value

  • check_diagonal(): Returns the input matrix or raises an error if the condition is not met.

  • check_is_diagonal(): Logical value, TRUE if the matrix is diagonal, and FALSE otherwise.

Examples

# Examples for check_diagonal()
# -----------------------------

A <- diag(1:3)
print(A)
#>      [,1] [,2] [,3]
#> [1,]    1    0    0
#> [2,]    0    2    0
#> [3,]    0    0    3
check_diagonal(A)
#>      [,1] [,2] [,3]
#> [1,]    1    0    0
#> [2,]    0    2    0
#> [3,]    0    0    3

B <- matrix(1:9, nrow = 3)
print(B)
#>      [,1] [,2] [,3]
#> [1,]    1    4    7
#> [2,]    2    5    8
#> [3,]    3    6    9
try(check_diagonal(B))
#> Error in check_diagonal(B) : Expected 'mat' to be a diagonal matrix

C <- matrix(0, nrow = 3, ncol = 3)
print(C)
#>      [,1] [,2] [,3]
#> [1,]    0    0    0
#> [2,]    0    0    0
#> [3,]    0    0    0
check_diagonal(C)
#>      [,1] [,2] [,3]
#> [1,]    0    0    0
#> [2,]    0    0    0
#> [3,]    0    0    0

D <- matrix(1:6, nrow = 2)
print(D)
#>      [,1] [,2] [,3]
#> [1,]    1    3    5
#> [2,]    2    4    6
try(check_diagonal(D))
#> Error in check_matrix(mat = mat, is_square = TRUE, par_name = "mat") : 
#>   Expected 'mat' to be a square matrix but got a 2 by 3 matrix

vec <- c(1, 2, 3)
print(vec)
#> [1] 1 2 3
try(check_diagonal(vec))
#> Error in check_matrix(mat = mat, is_square = TRUE, par_name = "mat") : 
#>   Expected 'mat' to be a matrix but got numeric

# Examples for check_is_diagonal()
# --------------------------------

check_is_diagonal(A)
#> [1] TRUE

check_is_diagonal(B)
#> [1] FALSE

check_is_diagonal(C)
#> [1] TRUE

check_is_diagonal(D)
#> [1] FALSE

check_is_diagonal(vec)
#> [1] FALSE