如何根据行的条件定义总和?
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
我有一个矩阵 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