On Jul 14, 2009, at 2:25 AM, Michael Knudsen wrote:
On Tue, Jul 14, 2009 at 8:20 AM, Michael
Knudsen<micknud...@gmail.com> wrote:
What do you mean? It looks a like a very general solution to me.
Just got an email suggesting using the functions col and row. For
example
temp = matrix(c(1:36),nrow=6)
which(col(temp)>row(temp))
This gives the indices (in the matrix viewed as a vector) of the
above-diagonal entries.
If you want the entries it would then be:
temp[ col(temp) > row(temp) ]
But more simply:
> temp[ upper.tri(temp) ]
[1] 7 13 14 19 20 21 25 26 27 28 31 32 33 34 35
>
If you want the row and column numbers then:
> row(temp)[ col(temp) > row(temp)]
[1] 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
> col(temp)[ col(temp) > row(temp) ]
[1] 2 3 3 4 4 4 5 5 5 5 6 6 6 6 6
Any solution that uses col and row will create two additional matrices
of the same size as the original at least for the duration of the
operation.
For the sub-and super-diagonals:
http://finzi.psych.upenn.edu/Rhelp08/2009-March/191379.html
--
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
R-help@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.