簡體   English   中英

R igraph將平行邊緣轉換為權重屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM