[英]R igraph convert parallel edges to weight attribute
我正在使用igraph for R.我的圖表基於一個包含平行邊緣的邊緣列表(多個邊緣具有相同的源和目標)。 我想將這些平行邊緣轉換為邊緣屬性權重。 有沒有一種方法可以做到這一點?
如果沒有簡單的方法。 如何識別這些平行邊緣?
duplicated(E(net))
不會返回單個副本。 我想它正在尋找重復的邊緣ID。
您還可以使用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))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.