| forceSymmetric-methods {Matrix} | R Documentation | 
Force a Matrix to 'symmetricMatrix' Without Symmetry Checks
Description
Force a square matrix x to a symmetricMatrix,
without a symmetry check as it would be applied for as(x,
    "symmetricMatrix").
Usage
forceSymmetric(x, uplo)
Arguments
| x | any square matrix (of numbers), either “"traditional"”
( | 
| uplo | optional string,  | 
Value
a square matrix inheriting from class
symmetricMatrix.
See Also
symmpart for the symmetric part of a matrix, or
the coercions as(x, <symmetricMatrix class>).
Examples
 ## Hilbert matrix
 i <- 1:6
 h6 <- 1/outer(i - 1L, i, "+")
 sd <- sqrt(diag(h6))
 hh <- t(h6/sd)/sd # theoretically symmetric
 isSymmetric(hh, tol=0) # FALSE; hence
 try( as(hh, "symmetricMatrix") ) # fails, but this works fine:
 H6 <- forceSymmetric(hh)
 ## result can be pretty surprising:
 (M <- Matrix(1:36, 6))
 forceSymmetric(M) # symmetric, hence very different in lower triangle
 (tm <- tril(M))
 forceSymmetric(tm)
[Package Matrix version 1.7-4 Index]