Предыдущий ответ на другой вопрос предоставил некоторый код для переустановки взвешенного графика как:
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
Воспроизведение с помощью этого кода, однако, показывает, что NAs вводятся в вектор весовых границ:
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) Есть ли система переустановки, которая также рандомизирует весы так, чтобы сеть сохраняла свою полную прочность, но оба бинарных ребра перезаписываются, а отдельные веса ребер по краям меняются набухание?
например. не просто
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