R igraph преобразовать параллельные ребра в весовой атрибут
Я работаю с igraph для R. Мой график основан на списке ребер, который включает параллельные ребра (более одного ребра с одним и тем же источником и целью). Я хотел бы преобразовать эти параллельные ребра в вес атрибута ребра. Есть ли способ сделать это?
Если нет простого пути. как я могу определить эти параллельные ребра?
duplicated(E(net))
не возвращает ни одного дубликата. Я полагаю, он ищет дублированные идентификаторы ребер.
3 ответа
Вы также можете использовать E(graph)$weight <- 1
с последующим simplify(graph, edge.attr.comb=list(weight="sum"))
назначить вес 1 для каждого ребра, а затем сложить несколько ребер в одно, суммируя веса.
Кажется, экспорт невзвешенного графа с параллельными ребрами в матрицу смежности в igraph
создает список весов с количеством ребер в качестве веса, который затем можно прочитать снова:
library("igraph")
E <- matrix(c(1,1,1,2,2,2),3,2)
G <- graph.edgelist(E)
G2 <- graph.adjacency(get.adjacency(G),weighted=TRUE)
Если вы хотите получить количество параллельных ребер графа без добавления атрибута веса к вашему графику, вы можете использовать следующую функцию:
duplicated <- function(graph){
g_local <- graph
E(g_local)$weight <- 1
g_simp <- simplify(g_local, edge.attr.comb=list(weight="sum"))
w <- E(g_simp)$weight
return(sum(w-1))
}