r Ich habe diese 3 IGRAPH Objekte:Identifizieren Anzahl von gleichen/verschiedenen Kanten zwischen zwei Objekten IGRAPH
g1 <- graph(edges=c(1, 2, 2, 3, 3, 1), n=3, directed=T)
g2 <- graph(edges=c(1, 2, 2, 3, 1, 3), n=3, directed=T)
g3 <- graph(edges=c(1, 2, 2, 3, 1, 3, 3, 4), n=4, directed=T)
IGRAPH D--- 3 3 --
+ edges:
[1] 1->2 2->3 3->1
IGRAPH D--- 3 3 --
+ edges:
[1] 1->2 2->3 1->3
IGRAPH D--- 4 4 --
+ edges:
[1] 1->2 2->3 1->3 3->4
Ich mag die Kanten von g1 zu g2 vergleichen und von g2 bis g3. Ich möchte die Anzahl der Kanten, die genau gleich sind, die Anzahl der Kanten, die umgekehrt werden (z. B. 1 -> 3 ändert sich zu 3 -> 1) und die Anzahl der zusätzlichen Kanten zählen.
Gibt es eine einfache Funktion für diese Art von Kantenvergleich?
Wie ich es derzeit tun, ist die Kantenliste zu bekommen und dann eine Reihe Matching-Verfahren tun zu vergleichen, was existiert und was nicht:
igraph::get.edgelist(g1)
igraph::get.edgelist(g2)
igraph::get.edgelist(g3)
> igraph::get.edgelist(g1)
[,1] [,2]
[1,] 1 2
[2,] 2 3
[3,] 3 1
> igraph::get.edgelist(g2)
[,1] [,2]
[1,] 1 2
[2,] 2 3
[3,] 1 3
> igraph::get.edgelist(g3)
[,1] [,2]
[1,] 1 2
[2,] 2 3
[3,] 1 3
[4,] 3 4
Dies scheint jedoch langatmig. Gibt es eine einfachere Möglichkeit, zwei Objekte in der gigraph zu vergleichen?
Der Ausgang für g1 g2 wäre:
same reverse addition
2 1 0
und g2 bis g3 wäre:
same reverse addition
3 0 1