Matrix R:对称矩阵中特定元素的求和

Matrix R:对称矩阵中特定元素的求和,matrix,Matrix,如果我有一个相关矩阵,我知道我可以使用upper.tri或lower.tri对所有值求和,但是有没有一种方法可以对矩阵的特定部分求和 例如,5个变量的相关矩阵: > Matrix [,1] [,2] [,3] [,4] [,5] [1,] 0 4 3 1 2 [2,] 4 0 3 2 1 [3,] 3 3 0 2 1 [4,] 1 2 2 0 1 [5,]

如果我有一个相关矩阵,我知道我可以使用upper.tri或lower.tri对所有值求和,但是有没有一种方法可以对矩阵的特定部分求和

例如,5个变量的相关矩阵:

> Matrix
      [,1] [,2] [,3] [,4] [,5]
[1,]    0    4    3    1    2
[2,]    4    0    3    2    1
[3,]    3    3    0    2    1
[4,]    1    2    2    0    1
[5,]    2    1    1    1    0

如果前2个变量属于一个组,而3-5个变量属于另一个组,有没有办法只要求组间值的总和?e、 例如,3+3+1+2+2+1=12。

这是一个冗长的答案,但希望能对你有所帮助

matrix <- matrix (c(0,4,3,1,2,4,0,3,2,1,3,3,0,2,1,1,2,2,0,1,2,1,1,1,0), nrow=5, ncol=5)
group <- list(group1=c(1,2), group2=c(3,4,5))
sum_matrix <- matrix(data <- rep(NA), nrow = length(group), ncol= length(group))

for (i in 1:length(group))
{
  for(j in 1:length(group))
  {
    ifelse(i==j, sum_matrix[i,j]<- NA, sum_matrix[i,j] <- sum(matrix[group[[i]], group[[j]] ]) )
   
  }
}
sum_matrix


sum(matrix[group2, group1])
sum(matrix[group1, group2])

matrix谢谢,这很有效。由于某种原因,我无法让最后几行工作,但“求和矩阵”的输出给出了我想要的答案。再简单一点——有没有简单的方法来求一组值的总和?e、 例如,对于第1组,它将是三角形上方或下方的所有三角形,因此4+3+3+1+2+2+1=16。