de voeux,Disposer les éléments d'une matrice selon l'une rowSums + courtes « Appliquer » partie Q
Mon but est de créer une matrice de transition de Markov (probabilité de passer d'un état à un autre) avec le « plus de trafic » de la matrice occupant la section en haut à gauche. Prenons l'exemple suivant:
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)
Je blême pour réarranger les éléments de cette matrice de telle sorte que les éléments avec les plus grandes sommes rangée sont placés en haut à gauche, dans l'ordre décroissant. Est-ce que ça a du sens? Dans ce cas, l'ordre que je cherche serait B, D, A, E, C Des pensées? En aparté, voici la fonction que j'ai écrite pour construire la matrice de transition. Existe-t-il une manière plus élégante de faire cela qui n'implique pas une double transposition?
TMAT <- apply(t(MAT), 2, function(X) X/sum(X))
TMAT <- t(TMAT)
J'ai essayé les éléments suivants:
TMAT <- apply(MAT, 1, function(X) X/sum(X))
Mais ma la fonction personnalisée est encore en train appliqué sur les colonnes du tableau, plutôt que les lignes. Pour un essai de contrôle:
rowSums(TMAT)
colSums(TMAT)
sommes en ligne ici doit être égal à 1 ...
Un grand merci à l'avance, Aaron
merci beaucoup pour votre aide, tous! ceux-ci ont fait l'affaire. UNE – Aaron