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

如何使用igraph包在R中进行求和,r,igraph,R,Igraph,我试图计算R中网络中的队列大小。首先,我计算网络中所有节点的介数中心度,它返回一个向量。为了计算队列,我必须对所有节点的所有中间值进行求和,并将其与一些其他值相乘,在我的例子中,这些值是常量。我尝试使用for循环,我的代码如下所示: between <- betweenness(graphList[[1]], v=V(graphList[[1]]), directed =TRUE, weights = NULL,nobigint = TRUE, normalized = FALSE) S

我试图计算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您的问题是,当您调用
length(S)
作为循环变量时,将
length(S)
length(S)
作为介于
之间的
变量,即如果
length(between)
29
S=29
length(S)
1
。因此,您只能得到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
库(igraph)
种子(24)
G