[R] Arrange elements on a matrix according to rowSums + short 'apply' Q

Ivan Calandra ivan.calandra at uni-hamburg.de
Thu Dec 2 10:43:37 CET 2010


Hi,

Here is a not so easy way to do your first step, but it works:
MAT2 <- cbind(MAT, rowSums(MAT))
MAT[order(MAT2[,6], decreasing=TRUE),]

For the second, I don't know!

HTH,
Ivan


Le 12/2/2010 09:46, Aaron Polhamus a écrit :
> Greetings,
>
> My goal is to create a Markov transition matrix (probability of moving from
> one state to another) with the 'highest traffic' portion of the matrix
> occupying the top-left section. Consider the following sample:
>
> inputData<- c(
>      c(5, 3, 1, 6, 7),
>      c(9, 7, 3, 10, 11),
>      c(1, 2, 3, 4, 5),
>      c(2, 4, 6, 8, 10),
>      c(9, 5, 2, 1, 1)
>      )
>
> MAT<- matrix(inputData, nrow = 5, ncol = 5, byrow = TRUE)
> colnames(MAT)<- c("A", "B", "C", "D", "E")
> rownames(MAT)<- c("A", "B", "C", "D", "E")
>
> rowSums(MAT)
>
> I wan to re-arrange the elements of this matrix such that the elements with
> the largest row sums are placed to the top-left, in descending order. Does
> this make sense? In this case the order I'm looking for would be B, D, A, E,
> C Any thoughts?
>
> As an aside, here is the function I've written to construct the transition
> matrix. Is there a more elegant way to do this that doesn't involve a double
> transpose?
>
> TMAT<- apply(t(MAT), 2, function(X) X/sum(X))
> TMAT<- t(TMAT)
>
> I tried the following:
>
> TMAT<- apply(MAT, 1, function(X) X/sum(X))
>
> But my the custom function is still getting applied over the columns of the
> array, rather than the rows. For a check try:
>
> rowSums(TMAT)
> colSums(TMAT)
>
> Row sums here should equal 1...
>
> Many thanks in advance,
> Aaron
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>

-- 
Ivan CALANDRA
PhD Student
University of Hamburg
Biozentrum Grindel und Zoologisches Museum
Abt. Säugetiere
Martin-Luther-King-Platz 3
D-20146 Hamburg, GERMANY
+49(0)40 42838 6231
ivan.calandra at uni-hamburg.de

**********
http://www.for771.uni-bonn.de
http://webapp5.rrz.uni-hamburg.de/mammals/eng/1525_8_1.php



More information about the R-help mailing list