2016-01-23 38 views
0

我想根據它們連接的節點的值(在R igraph中)設置圖形中某個範圍邊緣的邊緣屬性。從igraph.es(邊緣序列)到R中的節點

當我取回我的圖形對象有一定優勢,我擔任與邊序列對象:

E(g)[1] 
# + 1/2080 edge (vertex names): 
# [1] 35->1 
class(E(g)[1]) 
# [1] "igraph.es" 

我怎樣才能從該邊緣序列的實際邊緣?唯一相關的功能,我發現是as_ids

as_ids(E(g)[1]) 
# [1] "35|1"  

然後我不得不分割字符串才能到節點ID,這些ID轉換爲整數,取使用V(g)[x]符號的節點,檢查我的屬性感興趣並最終設置邊緣屬性。

這是一個不切實際和浪費的過程。有沒有更直接的方法來做同樣的事情?

我知道%--%符號,並在某些情況下,它允許我基於節點屬性邊緣過濾提前解決了我的問題。但在其他許多情況下是符號並不能幫助(如果邊緣屬性值與節點的屬性更復雜的關係),我不知道是否有從一個邊緣序列進入到相應的節點對一個更一般的方式。

回答

2

可以使用ends功能才能到頂點:

ends(g, E(g)[1]) 
+0

你知道,如果在Python的igraph的任何等效功能? – sera

+0

@sera您不需要Python中的函數。您可以輕鬆使用'Edge'類的'source'和'target'屬性:http://igraph.org/python/doc/igraph.Edge-class.html – retrography

+1

謝謝。我猜如果我使用ends = [e.tuple for e in g.es],我會得到相同的結果嗎? – sera