如何在R中使用图形包做求和

  • 本文关键字:图形包 求和 igraph
  • 更新时间 :
  • 英文 :


我试图在r中计算网络中的队列大小。首先,我计算网络中返回向量的所有节点的中间性中心性。为了计算队列,我必须对所有节点的所有中间值求和,并将其与其他一些值相乘,这些值在我的例子中是常数。我已经尝试使用for循环,我的代码如下所示:

between <- betweenness(graphList[[1]], v=V(graphList[[1]]), directed =TRUE, weights = NULL,nobigint = TRUE, normalized = FALSE)
S <- length (between)
A <- 0
for(i in 1:length(S))
{
 A = A + sum (d * l * between [i]/(S - 1 - (d * l * between [i])) )
}

现在A只返回between的第一个值,而不是整个向量。还有别的方法来计算吗?有人能帮我一下吗?

您的问题是,当您调用length(S)作为循环变量时,您将betweenlengthlength,即如果length(between)29, S = 29length(S)1。所以你只得到一个循环。你可以把它改成:

for(i in 1:S)....

它会起作用。

但:

你在两者之间做的所有计算都是矢量化的,所以不需要循环:

library(igraph)
set.seed(24)
g <- random.graph.game(10, 3/10)
between <- betweenness(g)
S <- length (between)
A <- 0
d <- 0.5 #not sure what value you had
l <- 0.5 #not sure again
A <- sum((d * l * between /(S - 1 - (d * l * between)) ))
A
[1] 1.219178

最新更新