重新连线加权图会产生NA

时间:2016-08-11 12:46:17

标签: r graph igraph

之前的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

0 个答案:

没有答案