矩阵元素求和

3

我有一个矩阵,想要对其中的元素进行求和,但不包括对角线上的元素。假设:

 matrixDat <- matrix(1:25, ncol=5)
 colnames(matrixDat) <- c("A", "B", "C", "D", "E")
  rownames(matrixDat) <- c("A", "B", "C", "D", "E")

The result i expect is:

c(2+6, 3+11, 4+16, 5+21, 8+12, 9+17, 10+22, 14+18, 15+23, 20+24)

例如:在不包括第一行和第一列的情况下对第一行和第一列进行求和。完成后,删除第一行和第一列,从第二行和第二列开始,然后再删除它,用第三行、第三列来执行此过程,直到达到第五行、第五列。


1
好的。使用循环最容易实现。请展示您尝试过的内容以及遇到的困难。 - Roland
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接