如何根据行的条件定义总和?

How to define the sum with conditions over rows?

我有一个矩阵 A 和一个列表 N

> dput(N)
list(`1` = 2L, `2` = c(1L, 3L, 4L), `3` = c(1L, 2L, 4L), `4` = 1:3)

我需要通过以下方式设置矩阵 P

, 其中 |N_i| 表示集合中元素的数量 N_i.

我的尝试是:

n <- 4

A <- matrix(c(0,1,1,1, 0,0,1,1, 0,0,0,1, 1,0,0,0), n, n, byrow = TRUE)
for(i in N[i])
for(j in N[j]){
         if(i!=j){
                 sum1 = sum1 + A[i,j]
                 sum2 = sum2 + A[j,i]
                 }
}

问题:如何在行上定义带条件的总和?

可能

P=matrix(NA,n,n)

for(i in 1:n) {
  for(j in 1:n){
    if(i!=j){
      P[i,j]=0.5*(sum(A[N[[i]],j])/length(N[[i]])+sum(A[N[[j]],i])/length(N[[j]]))
    }
  }
}

导致

          [,1]      [,2]      [,3]      [,4]
[1,]        NA 0.1666667 0.6666667 0.5000000
[2,] 0.1666667        NA 0.3333333 0.5000000
[3,] 0.6666667 0.3333333        NA 0.6666667
[4,] 0.5000000 0.5000000 0.6666667        NA