igraph中是否有方法或類可以快速有效地執行此過程?如何從一個有向圖g中將一個頂點及其各自的邊(全部/進/出)複製到一個新的有向圖g1?
0
A
回答
3
我們假設你的圖是在g
中,並且要使用的頂點集是sampled
(它是一個由從零開始的頂點ID組成的向量)。
首先,我們選擇邊的集合,其中至少一個端點是sampled
:
all.vertices <- (1:vcount(g)) - 1
es <- E(g) [ sampled %--% 1:n ]
es
現在是一個「邊緣序列」對象,由感興趣的邊緣。接下來,我們採取的曲線圖(其爲MX 2矩陣)的邊緣列表並選擇的行對應於所述邊緣:
el <- get.edgelist(g)[as.vector(es)+1]
這裏,as.vector(es)
邊緣序列轉換爲包括以下各項的邊緣ID的向量邊緣序列中的邊緣,並用它來選擇邊緣列表的適當子集。請注意,我們必須將1添加到邊緣ID,因爲R向量從1開始索引,但igraph邊緣ID從零開始。
接下來,我們就從邊列表構造的結果:
g1 <- graph(el, vcount(g), directed=is.directed(g))
注意g1
將僅包含儘可能多的頂點爲g
。可以按如下方式採取由採樣頂點的子圖:
g1 <- subgraph(g1, sampled)
注到的igraph 0.6的用戶和上述:的igraph 0.6將基於0切換到基於1的索引,而不是,所以沒有需要從all.vertices
中減去1,並且不需要將1加到as.vector(es)
。此外,igraph 0.6將包含一個稱爲subgraph.edges
的功能,所以人們可以簡單地使用它:
g1 <- subgraph.edges(g, es)
相關問題
- 1. 有向圖中從一個頂點到另一個頂點的最短路徑
- 2. 向圖中添加一個頂點
- 3. 從有向圖G中刪除一條邊G
- 4. 在有向圖中找出一個循環中的所有頂點
- 5. 複製圖像的一部分並將其粘貼到另一個圖像中?
- 6. 如何在有向圖中找到最小的一組頂點,以便可以達到所有其他頂點
- 7. 將segue從一個視圖控制器重定向到另一個視圖
- 8. 有沒有辦法使用python將一個過濾器從一個圖層複製到另一個圖層
- 9. 如何將一個頁面從一個進程複製到另一個進程?
- 10. 複製一個圖片,並將其粘貼在另一個頂級的終端
- 11. 如何在HTML中將一個圖像放在另一個圖像的頂部?
- 12. 如何在HTML中將一個圖像置於另一個圖像的頂部
- 13. 如何將一個圖中的邊添加到R中的另一個圖中?
- 14. Django如何將元素從一個視圖複製到另一個視圖?
- 15. Zend Framework - 如何將變量從一個視圖複製到另一個視圖
- 16. 如何添加一個新的單點到一個浮點圖?
- 17. 從一個Razor視圖重定向到另一個Razor視圖
- 18. 如何將一個圖形對象複製到另一個
- 19. 如何將NFC tagInfo從一個意圖轉移到另一個意向(一個界面到另一個界面)?
- 20. 在一個點文件中解析多個有向圖
- 21. 如何從一個預先確定的頂點開始,至少從一個無向加權圖中找出訪問每個頂點的最低成本?
- 22. OpenCV python從一個圖像複製多邊形到另一個圖像
- 23. networkx python,有向/無向圖,不一致的節點和邊緣?
- 24. 將圖像從一個文件夾複製到另一個
- 25. 將變量從一個TensorFlow圖複製到另一個
- 26. 如何將IB中的自動佈局約束從一個視圖複製到另一個視圖?
- 27. MVC重定向到一個沒有控制器的視圖
- 28. 如何將圖片的標題從一個docx複製到另一個docx
- 29. 試圖找到一個合適的起點以及製作應用的方向
- 30. 如何從部分重定向到另一個視圖?