R igraph 手册页

如果您从 R 中使用 igraph,请使用此选项

compose {igraph}R 文档

将两个图组合成二元关系

描述

两个图的关系组合。

用法

compose(g1, g2, byname = "auto")

参数

g1

第一个输入图。

g2

第二个输入图。

byname

一个逻辑标量,或字符标量auto。是否基于符号顶点名称执行操作。如果它是auto,则意味着如果两个图都已命名,则为TRUE,否则为FALSE。如果auto且仅一个图已命名,则会生成警告。

详细信息

compose创建两个图的关系组合。新的图仅当存在一个顶点 c,使得边 (a,c) 包含在第一个图中,并且 (c,b) 包含在第二个图中时,才包含边 (a,b)。相应的运算符是 %c%。

如果其中一个输入图是有向图,而另一个是无向图,则该函数会报错。

如果byname参数是TRUE(或auto且所有图都已命名),则操作基于符号顶点名称执行。否则,使用数字顶点 ID。

compose保留两个图的属性。所有图、顶点和边属性都复制到结果中。如果一个属性存在于多个图中,并导致名称冲突,则通过添加后缀来重命名该属性:_1、_2 等。

如果操作基于符号顶点名称执行,则特别处理name顶点属性。在这种情况下,name必须存在于两个图中,并且不会在结果图中重命名。

请注意,结果图中的一条边对应于输入中的两条边,一条在第一个图中,一条在第二个图中。此映射不是单射的,结果中的几条边可能对应于第一个(和/或第二个)图中的同一条边。结果图中的边属性会相应更新。

另请注意,如果对于结果中的一条边 (a,c),存在多种在 g1 中找到边 (a,b) 和在 g2 中找到边 (b,c) 的方式,则该函数可能会生成多重图。如果您想摆脱多条边,请参阅simplify

如果 g1 和 g2 中分别存在边 (a,b) 和 (b,a),则该函数可能会创建环边,则 (a,a) 包含在结果中。如果您想摆脱自环,请参阅simplify

一个新的图对象。

作者

Gabor Csardi csardi.gabor@gmail.com

示例


g1 <- make_ring(10)
g2 <- make_star(10, mode="undirected")
gc <- compose(g1, g2)
print_all(gc)
print_all(simplify(gc))


[包 igraph 版本 1.3.5 索引]