如何使用igraph R包比较两个图以标识两个图之间相同/不同边的数量

问题描述

我有两个无向图

library(igraph)
g1 <- make_graph( edges=c("A","B","C","A"),directed=F ) 

g2 <- make_graph( edges=c("A","A","D"),directed=F ) 

我想比较g1到g2图的边缘。我想计算完全相同的边数,以及反转的边数(例如,A-> C更改为C-> A,因为在无向网络中都暗示相似的边),并且该数目其他边缘。

是否有一个简单的功能可以进行这种边缘比较?谁能帮我解决这个问题。

解决方法

我想您可以使用as_data_frame + intersect来查看共同的边缘

commEdges <- intersect(as_data_frame(g1),as_data_frame(g2))

给出

  from to
1    A  B
2    B  C
3    A  C

,公共边数可以通过nrow(commEdges)

进行计数

如果您只想知道有多少公共边,一种简单的方法是

> length(intersect(E(g1),E(g2)))
[1] 3