isSymmetric-methods {Matrix} | R Documentation |
Methods for Function 'isSymmetric' in Package 'Matrix'
Description
isSymmetric
tests whether its argument is a symmetric square
matrix, by default tolerating some numerical fuzz and requiring
symmetric [dD]imnames
in addition to symmetry in the
mathematical sense. isSymmetric
is a generic function in
base, which has a method for traditional
matrices of implicit class
"matrix"
.
Methods are defined here for various proper and virtual classes
in Matrix, so that isSymmetric
works for all objects
inheriting from virtual class "Matrix"
.
Usage
## S4 method for signature 'denseMatrix'
isSymmetric(object, checkDN = TRUE, ...)
## S4 method for signature 'CsparseMatrix'
isSymmetric(object, checkDN = TRUE, ...)
## S4 method for signature 'RsparseMatrix'
isSymmetric(object, checkDN = TRUE, ...)
## S4 method for signature 'TsparseMatrix'
isSymmetric(object, checkDN = TRUE, ...)
## S4 method for signature 'diagonalMatrix'
isSymmetric(object, checkDN = TRUE, ...)
## S4 method for signature 'indMatrix'
isSymmetric(object, checkDN = TRUE, ...)
## S4 method for signature 'dgeMatrix'
isSymmetric(object, checkDN = TRUE, tol = 100 * .Machine$double.eps, tol1 = 8 * tol, ...)
## S4 method for signature 'dgCMatrix'
isSymmetric(object, checkDN = TRUE, tol = 100 * .Machine$double.eps, ...)
Arguments
object |
a |
checkDN |
a logical indicating whether symmetry of the
|
tol , tol1 |
numerical tolerances allowing approximate
symmetry of numeric (rather than logical) matrices. See also
|
... |
further arguments passed to methods
(typically methods for |
Details
The Dimnames
slot of object
, say dn
,
is considered to be symmetric if and only if
-
dn[[1]]
anddn[[2]]
are identical or one isNULL
; and -
ndn <- names(dn)
isNULL
orndn[1]
andndn[2]
are identical or one is the empty string""
.
Hence list(a=nms, a=nms)
is considered to be symmetric,
and so too are list(a=nms, NULL)
and list(NULL, a=nms)
.
Note that this definition is looser than that employed by
isSymmetric.matrix
, which requires dn[1]
and
dn[2]
to be identical, where dn
is the dimnames
attribute of a traditional matrix.
Value
A logical, either TRUE
or FALSE
(never NA
).
See Also
forceSymmetric
;
symmpart
and skewpart
;
virtual class "symmetricMatrix"
and its subclasses.
Examples
isSymmetric(Diagonal(4)) # TRUE of course
M <- Matrix(c(1,2,2,1), 2,2)
isSymmetric(M) # TRUE (*and* of formal class "dsyMatrix")
isSymmetric(as(M, "generalMatrix")) # still symmetric, even if not "formally"
isSymmetric(triu(M)) # FALSE
## Look at implementations:
showMethods("isSymmetric", includeDefs = TRUE) # includes S3 generic from base