[Rd] unexpected behaviour of isSymmetric() (PR#14000)
Romain Francois
romain.francois at dbmail.com
Mon Oct 12 13:41:19 CEST 2009
On 10/12/2009 02:05 AM, mike at stat.ubc.ca wrote:
>
> Full_Name: Mike Danilov
> Version: 2.9.0
> OS: Fedora Core 9
> Submission from: (NULL) (142.103.121.198)
>
>
> When checking for the symmetry of a matrix, function isSymmetric.matrix() gets
> confused by the discrepancy of colnames/rownames if its argument. See the code
> snippet below. Perhaps it's a problem of the matrix product which copies
> colnames of the first argument but not the rownames of the second to its value.
> Not sure which one should be fixed but the way it is now it seems illogical that
> X'X is deemed to be non-symmetric.
>
> x<- c(1,2,3)
> names(x)<- c("v1","v2","v3")
> isSymmetric(x%*%t(x)) ## returns FALSE instead of TRUE
It seems to be concerned with the names
> y <- x %*% t(x)
> y
v1 v2 v3
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
> isSymmetric( y )
[1] FALSE
# dropping the dimnames
> isSymmetric( structure( y, dimnames = NULL ) )
[1] TRUE
# pass the ... along this path : isSymmetric > all.equal > all.equal.numeric
> isSymmetric( y, check.attributes = F )
[1] TRUE
# set the dimnames equal
> dimnames( y ) <- rep( list( names(x) ), 2 )
> isSymmetric( y )
[1] TRUE
Not sure this is expected behaviour
Romain
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/BcPw : celebrating R commit #50000
|- http://tr.im/ztCu : RGG #158:161: examples of package IDPmisc
`- http://tr.im/yw8E : New R package : sos
More information about the R-devel
mailing list