我有一个矩阵,我想从中对元素求和而不包括对角线。认为,
matrixDat <- matrix(1:25, ncol=5)
colnames(matrixDat) <- c("A", "B", "C", "D", "E")
rownames(matrixDat) <- c("A", "B", "C", "D", "E")
我期望的结果是:
c(2+6, 3+11, 4+16, 5+21, 8+12, 9+17, 10+22, 14+18, 15+23, 20+24)
IE。第一行和第一列不加1求和。完成后,删除第一行和第一列,从第二行第二列开始,然后将其删除,以第三行第三列进行处理,直到到达第五行,第五栏。
最佳答案
尝试:
indx <- lower.tri(matrixDat)
matrixDat[indx]+t(matrixDat)[indx]
#[1] 8 14 20 26 20 26 32 32 38 44
或者,你可以做一个循环
vec1 <- vector()
for(i in 1:ncol(m1)){
vec1 <- c(vec1,matrixDat[,i][-(1:i)]+matrixDat[i,][-(1:i)])
}
unname(vec1)
#[1] 8 14 20 26 20 26 32 32 38 44
关于r - 求和矩阵的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25426866/