如何使用igraph包在R中进行求和

3

我正在尝试在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])) )
}

现在只有第一个between的数值能返回A的值,而不是整个向量。 有没有其他方法来计算这个? 有人可以帮助我吗?
1个回答

1
你的问题在于当你将length(S)作为循环变量时,你实际上是取得了betweenlengthlength,也就是说如果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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接