匹配 2 个图中的边
Matching edges in 2 graphs
我有 2 个图表,我们称它们为 g1 和 g2。图 g2 具有与 g1 相同的结构,但包含 g1 中不存在的新边。我必须找到这些边缘。
g1 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5), n=5, directed=FALSE)
g2 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5,3,5), n=5, directed=FALSE)
在这种情况下,我正在寻找的是边缘 3--5。
到目前为止,我想到了使用 g1 的补码,然后将其与 g2 的边进行匹配以找到这些新边。问题是我的语法有问题。 (R 新手)
g1_complement <- complementer(g1)
现在我只想获取 g2 中但不在 g1 中的新边。我正在考虑这样做。
E(g1_complement)[E(g1_complement) %in% E(g2)]
我原以为只得到新边,但是 returns 所有 g1_complement 边。我只使用 igraph 作为库。
请使用 igraph
库中的 difference()
函数找到以下一种可能的解决方案。
Reprex
library(igraph)
g1 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5), n=5, directed=FALSE)
g2 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5,3,5), n=5, directed=FALSE)
difference(g2, g1)
#> IGRAPH 9fb5e8c U--- 5 1 --
#> + edge from 9fb5e8c:
#> [1] 3--5
由 reprex package (v2.0.1)
于 2022-01-30 创建
我们可以试试
> E(g2)[!E(g2) %in% E(g1)]
+ 1/7 edge from 9fdc2d2:
[1] 3--5
> E(g2)[setdiff(E(g2), E(g1))]
+ 1/7 edge from 9fdc2d2:
[1] 3--5
我有 2 个图表,我们称它们为 g1 和 g2。图 g2 具有与 g1 相同的结构,但包含 g1 中不存在的新边。我必须找到这些边缘。
g1 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5), n=5, directed=FALSE)
g2 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5,3,5), n=5, directed=FALSE)
在这种情况下,我正在寻找的是边缘 3--5。
到目前为止,我想到了使用 g1 的补码,然后将其与 g2 的边进行匹配以找到这些新边。问题是我的语法有问题。 (R 新手)
g1_complement <- complementer(g1)
现在我只想获取 g2 中但不在 g1 中的新边。我正在考虑这样做。
E(g1_complement)[E(g1_complement) %in% E(g2)]
我原以为只得到新边,但是 returns 所有 g1_complement 边。我只使用 igraph 作为库。
请使用 igraph
库中的 difference()
函数找到以下一种可能的解决方案。
Reprex
library(igraph)
g1 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5), n=5, directed=FALSE)
g2 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5,3,5), n=5, directed=FALSE)
difference(g2, g1)
#> IGRAPH 9fb5e8c U--- 5 1 --
#> + edge from 9fb5e8c:
#> [1] 3--5
由 reprex package (v2.0.1)
于 2022-01-30 创建我们可以试试
> E(g2)[!E(g2) %in% E(g1)]
+ 1/7 edge from 9fdc2d2:
[1] 3--5
> E(g2)[setdiff(E(g2), E(g1))]
+ 1/7 edge from 9fdc2d2:
[1] 3--5