因此,我正在使用 igraph 库计算 R 中图的交集。我使用的命令为:
str(g1 %s% g2 %s% g3)
。
图表统计如下:
g1
IGRAPH UN-- 68 41 --
+ attr: name (v/c)
g2
IGRAPH UN-- 149 94 --
+ attr: name (v/c)
g3
IGRAPH UN-- 164 106 --
+ attr: name (v/c)
现在,我计算这三个图的交集:
temp <- str(g1 %s% g2 %s% g3)
当我看到temp
时,
IGRAPH UN-- 335 0 --
+ attr: name (v/c)
这怎么可能?当我计算公共(public)元素时,相交图中最终的顶点怎么可能比单个元素多呢?
最佳答案
您可以仅使用 graph.intersection()
的 keep.all.vertices
参数,请参阅 http://igraph.org/r/doc/graph.intersection.html如果您使用此参数,则需要直接调用 graph.intersection()
,而不是使用中缀运算符,以便可以传递额外的参数。使用其他答案中的示例:
library(igraph)
g1 <- graph.formula(A -- B -- C -- D)
g2 <- graph.formula(C -- E -- D -- C)
g <- graph.intersection(g1, g2, keep.all.vertices = FALSE)
str(g)
#> IGRAPH UN-- 2 1 --
#> + attr: name (v/c)
#> + edges (vertex names):
#> [1] C--D
您可以将两个以上的图形传递给graph.intersection()
。
关于r - 在 R 中使用 igraph 进行图交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27444862/