1
對不起,我對這個igraph軟件包很陌生 現在我有一個非簡單的循環,我試圖通過遍歷每個節點並刪除符合某些特定條件的邊來簡化循環標準。我一直在解決這個問題幾個小時,並希望解決這個問題的一些建議。從igraph刪除邊緣
現在我工作的一個函數,給定圖的頂點,那麼我們要消除長度小於所有這些邊緣的最大長度從特定頂點的所有邊
df=data.frame(node("A","A","B","B","A"),edge("B","C","C","A","B"),length(1,1,1,1,10))
g<-graph_from_data_frame(df)
delete_extra_edges<-function(g,node){
list_of_incident_edges=incident_edges(g,node,"out")
max_quantity<-max(unlist(list_of_incident_edges[[1]]$length))
list_to_delete=which(list_of_incident_edges[[1]]$length<max_quantity)
for(index in list_to_delete){
g<-delete_edges(g,index) #or alternatively: g<-g-list_of_incident_edges[[1]][index]
}
return(g)
}
的這個方法的問題是(除了事實上它仍然保留與最大長度具有相同長度的多條邊,但我稍後將討論),list_to_delete的索引不一定等於邊中的ID在圖表g。
了替代的實現的問題是,它給了我錯誤
我只是一個測試數據幀的工作DF以上
西爾維亞您好,感謝您的幫助!其實我想刪除在list_to_delete中索引的所有邊。但我設法使用 graph - list_of_incident_edges [[1]] [list_to_delete]。 –
對,對不起。在複製粘貼時,這會丟失。另外我認爲你應該將問題標記爲回答/接受答案,所以它被標記爲以某種方式解決。 – Sylvia