2014-06-29 3 views
2

Je souhaite calculer les sommes de rang/col pour la matrice de triangle supérieure/inférieure (avec diagonale). Exemple:Somme des rangées de la matrice sur/sous la diagonale

m <- matrix(1:9, nrow=3) 
#result: 
upperRowSums(m) 
## [1] 12 13 9 
lowerRowSums(m) 
## [1] 1 7 18 

Je sais que cela pourrait être fait avec boucle simple for, mais je veux éviter cela. Je suis à la recherche d'une solution R pure.

Répondre

4

Une façon:

rowSums(m * upper.tri(m, diag=TRUE)) 
#[1] 12 13 9 
+0

de Nice! Merci :) – bartektartanus

+5

Pour ceux qui ne sont pas sûrs de ce que les 'T' références, sous forme développée, c'est:' rowSums (m * supérieur.tri (m, diag = VRAI)) ' – thelatemail

Questions connexes