如何使用 igraph 包在 R 中进行求和
How to do a summation in R using igraph package
我正在尝试计算 R 网络中的队列大小。为此,我首先计算网络中所有节点的中间中心性,returns 一个向量。为了计算队列,我必须对所有节点的所有介数值求和,并将其与其他一些值相乘,这些值在我的例子中是不变的。我尝试使用 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])) )
}
现在的值Areturns只针对between的第一个值,不是整个vector。有没有其他方法可以计算这个?谁能帮我解决这个问题?
你的问题是,当你调用 length(S)
作为你的循环变量时,你正在使用 between
的 length
的 length
,即如果 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
我正在尝试计算 R 网络中的队列大小。为此,我首先计算网络中所有节点的中间中心性,returns 一个向量。为了计算队列,我必须对所有节点的所有介数值求和,并将其与其他一些值相乘,这些值在我的例子中是不变的。我尝试使用 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])) )
}
现在的值Areturns只针对between的第一个值,不是整个vector。有没有其他方法可以计算这个?谁能帮我解决这个问题?
你的问题是,当你调用 length(S)
作为你的循环变量时,你正在使用 between
的 length
的 length
,即如果 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