one way is: M <- matrix(sample(13, 9, TRUE), 3, 3)
n <- ncol(M) ind <- apply(M, 2, which.max) maxs <- M[cbind(ind, 1:n)] diags <- diag(M) diag(M) <- M[cbind(ind, 1:n)] M[cbind(ind, 1:n)] <- diags M I hope it helps. Best, Dimitris On 4/23/2010 10:10 PM, Jonathan wrote:
Hi r-help community, This question isn't so much a syntax/coding one, but here goes: Let's say I have matrix of arbitrary dimensions and I'd like to reorder the rows in such a way that I could maximize the sum of the entries along the diagonal. For example, for this 3x3 matrix: [,1] [,2] [,3] [1,] 3 4 13 [2,] 9 1 2 [3,] 2 11 1 rearranging the rows to maximize the sum along the diagonal would produce this matrix: [,1] [,2] [,3] [1,] 9 1 2 [2,] 2 11 1 [3,] 3 4 13 I've been experimenting with some scripts of my own, but I figured I'd ask if one of you R-ninjas might know of an existing function (or algorithm I could look up and then code) that can do this somewhat efficiently (or even just correctly!). Best, Jonathan ______________________________________________ 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.
-- Dimitris Rizopoulos Assistant Professor Department of Biostatistics Erasmus University Medical Center Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands Tel: +31/(0)10/7043478 Fax: +31/(0)10/7043014 ______________________________________________ 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.