之前的answer到另一个question提供了一些代码,用于将加权图重新连接为:
g <- graph.ring(10)
E(g)$weight <- seq_len(ecount(g))
E(g)$weight
# [1] 1 2 3 4 5 6 7 8 9 10
is.weighted(g)
# [1] TRUE
g2 <- rewire(g,niter=3)
plot(g2)
is.weighted(g2)
# [1] TRUE
但是,使用此代码可以看出,NA被引入到边权重向量中:
set.seed(1)
g <- graph.ring(10)
E(g)$weight <- seq_len(ecount(g))
E(g)$weight
# [1] 1 2 3 4 5 6 7 8 9 10
is.weighted(g)
# [1] TRUE
g2 <- rewire(g,niter=3)
E(g2)$weight
# [1] 1 2 4 5 6 7 9 NA NA NA
is.weighted(g2)
# [1] TRUE
接下来我有两个相关的问题:
1)解决NA问题的最简单方法是手动重新分配边缘,如下所示:
g2 <- rewire(g,niter=3)
E(g2)$weight <- sample( seq_len(ecount(g)) )
还是有更好的方式我们可以在igraph
中纠正这个问题,或者至少解释igraph
中发生的事情会发生什么?
2)是否有一个重新布线系统,它也会使权重随机化,以便网络保持其总强度,但二进制边缘都重新连接,并且边缘上的各个边缘权重会发生变化?< / p>
e.g。不只是
id id w
A - B 6
C - D 1
E - F 1
to
id id w
A - C 6
D - E 1
B - F 1
but also does:
id id w
A - B 6
C - D 1
E - F 1
to
id id w
A - C 4
D - E 3
B - F 1