如何用行上的条件定义总和?

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 已更正。

以上是关于如何用行上的条件定义总和?的主要内容,如果未能解决你的问题,请参考以下文章

Django用相关表上的条件注释总和

如何用条件填充缺失值?

Verilog中如何用assign条件判断语句构造三选一数据选择器?

如何用 if 条件填充列

如何用 IF 语句创建条件?

如何用dict \ df在一列上用条件替换列列表