[R] symmetric matrix on both diagonals

David Winsemius dwinsemius at comcast.net
Fri Apr 20 16:52:47 CEST 2012


On Apr 20, 2012, at 7:05 AM, Petr Savicky wrote:

> On Fri, Apr 20, 2012 at 03:03:40AM -0700, juliane0212 wrote:
>>
>> I'm  having some problems computing a matrix being symmetric on both
>> diagonals.
>>
>> Does anyone know a way to get from this matrix
>>
>>
>> M <- matrix(c(1,0,0,0,2,7,0,0,3,4,0,0,6,0,0,0), ncol=4)
>>
>> to this one
>>
>>               M_final <- matrix(c(1,2,3,6,2,7,4,3,3,4,7,2,6,3,2,1),  
>> ncol=4)
>
> Hi.
>
> Try the following.
>
>  M[row(M) > col(M)] <- t(M)[row(M) > col(M)]
>  n <- nrow(M)
>  M[row(M) + col(M) > n + 1] <- M[n:1, n:1][row(M) + col(M) > n + 1]
>  all(M == M_final)
>
>  [1] TRUE

How about?

 > M[3:4, ] <- rev(M[1:2,])
 > M
      [,1] [,2] [,3] [,4]
[1,]    1    2    3    6
[2,]    2    7    4    3
[3,]    3    4    7    2
[4,]    6    3    2    1

----
 > N <- matrix(c(1,2,3,6,2,7,4,3,3,4,7,2,6,3,2,1), ncol=4)
 > N==M
      [,1] [,2] [,3] [,4]
[1,] TRUE TRUE TRUE TRUE
[2,] TRUE TRUE TRUE TRUE
[3,] TRUE TRUE TRUE TRUE
[4,] TRUE TRUE TRUE TRUE


>
> Hope this helps.
>
> Petr Savicky.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list