我有一个矩阵,我想要在不包括对角线的情况下对元素求和。假设,
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)
即。总结第一行和第一列没有1.一旦完成,删除第一行和第一列,从第二行和第二列开始,然后删除它,用第三行,第三列进行处理,直到它到达第五行,fith专栏。
答案 0 :(得分:4)
尝试:
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