Find a mask that encapsulates the desired data:
> mask <- apply(lower.tri(A, diag = FALSE), 1, rev)
> mask
[,1] [,2] [,3] [,4]
[1,] FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE TRUE
[3,] FALSE FALSE TRUE TRUE
[4,] FALSE TRUE TRUE TRUE
Multiply this mask and calculate the sums:
> A * mask
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 14
[3,] 0 0 11 15
[4,] 0 8 12 16
> rowSums(A * mask)
[1] 0 14 26 36
source
share