2016-03-21 27 views
8

我想構造一個有向網絡圖的子圖,其中所有的頂點共享某個頂點屬性(比如V(Grph)$ year == 「1952」)和他們的一階(立即)鄰居,僅基於出境度。我試過ego(),make_ego_graph(),neighbors()adjacent_vertices()igraph - 作爲子圖的鄰居 - make_ego_graph()作爲單個圖

例如, CitGraph <- make_ego_graph(Grph, 1, nodes = which(V(Grph)$year=="1952"), mode = "out") 產生圖表的列表(而不是一個單一的一次),令人驚訝需要兩個小時的時間在今年50K頂點和150K的鄰居們指出。

我能想到的一種方法是將所有這些圖表彙總在列表中,但不知道如何。另外,我想保留頂點屬性,因爲我的最終目標是根據另一個頂點屬性(本例中爲地理位置)來計算assortativity_nominal()

在此先感謝您的任何建議!

回答

5

確實make_ego_graph返回列表nodes中每個頂點的鄰域圖。

我建議你使用你需要包含在你的子圖中的邊緣列表來代替頂點列表來解決它。假設你的頂點列表解決像list_of_vertices <- V(Grph)$year == "1952"或不管它是你的條件,你會做這樣的事情,

list_of_edges <- E(your_graph)[from(list_of_vertices) | to(list_of_vertices)] 
your_subgraph <- subgraph.edges(your_graph, list_of_edges) 

(我用有向圖)

希望它能幫助。

+0

太棒了,它完美的工作,謝謝你!對於我的例子,我必須將代碼的第一行調整爲'list_of_edges < - E(your_graph)[from(list_of_vertices)]',因爲我不僅對1952個頂點之間的邊緣感興趣,而且更廣泛地說,他們。 – user5835099

+0

你不僅僅是歡迎。乾杯。 – lrnzcig