如何用行上的条件定义总和?
Posted
技术标签:
【中文标题】如何用行上的条件定义总和?【英文标题】:How to define the sum with conditions over rows? 【发布时间】:2022-01-20 06:13:57 【问题描述】:我有一个矩阵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]
问题:如何在行上定义条件和?
【问题讨论】:
for(i in N[i])
i
未定义
这将有助于更清楚地说明您正在尝试做什么(您的代码和方程式有点不匹配?)以及案例中的预期结果跨度>
【参考方案1】:
也许
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
【讨论】:
|N_i|表示集合中元素的数量。 @Nick 已更正。以上是关于如何用行上的条件定义总和?的主要内容,如果未能解决你的问题,请参考以下文章