R igraph преобразование параллельных ребер в атрибут веса
Я работаю с igraph для R. мой график основан на списке ребер, который включает параллельные ребра (более одного ребра с тем же источником и целью). Я хотел бы преобразовать эти параллельные ребра в вес атрибута edge. Есть ли способ сделать это?
если нет простого способа. как определить эти параллельные ребра?
duplicated(E(net))
не возвращает ни одного дубликата. Я полагаю, что он ищет дублированные идентификаторы edge.
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))
}