2012-10-22 34 views
1

我正在研究igraph中的有向圖R中。我試圖將其轉換爲無向圖,其中只有前者的互惠邊緣存在。應該很容易,但我得到奇怪的結果。igraph使用互相轉換爲無向圖後的非互易邊緣

第一我沒有這樣說,這

library(igraph) 
    load("dmNet.Rdata") 
    #http://www.unet.univie.ac.at/~a0406222/dmNet.Rdata 

    recNet <- as.undirected(net, mode = "mutual",edge.attr.comb="sum") 

當我檢查E(recNet)$權重也有很多邊的權重爲1,由於兩個相互邊緣的總和應該是不可能的必須至少是2.然後我這樣做

recNet <- as.undirected(net, mode = "mutual",edge.attr.comb="c") 

現在我可以看到,實際上有一些邊緣只包含一個值。我的新圖recNet似乎包含網絡的非互易邊緣。我做錯了什麼,或者我誤解了「相互選擇」?

回答

3

發生這種情況的原因是某些邊緣在圖形中是自循環的。所有最終有一個權重爲1的邊緣是自循環:

all(which(E(recNet)$weight == 1) %in% which(is.loop(recNet))) 
# [1] TRUE 

顯然,自循環被認爲是一個有向圖的相互邊緣。如果你想將自環視爲非互相影響,那麼你可以從圖中刪除它們。不過要小心,因爲有些頂點有多個自循環,你可能不想刪除它們。