跳到内容

创建两个或多个图的交集。这些图可能具有相同或重叠的顶点集。

用法

# S3 method for class 'igraph'
intersection(..., byname = "auto", keep.all.vertices = TRUE)

参数

...

图对象或图对象列表。

byname

一个逻辑标量,或字符标量 auto。是否基于符号顶点名称执行操作。如果它是 auto,则如果所有图都已命名,则表示 TRUE,否则表示 FALSE。如果 auto 并且某些(但不是全部)图已命名,则会生成警告。

keep.all.vertices

逻辑标量,是否保留仅出现在输入图子集中的顶点。

一个新的图对象。

详细信息

intersection() 创建两个或多个图的交集:仅包含所有图中存在的边。对应的运算符是 %s%

如果 byname 参数为 TRUE(或 auto 且所有图都已命名),则操作将基于符号顶点名称而不是内部数字顶点 ID 执行。

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

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

如果某些输入图是有向的,而另一些是无向的,则会生成错误。

作者

Gabor Csardi csardi.gabor@gmail.com

示例


## Common part of two social networks
net1 <- graph_from_literal(
  D - A:B:F:G, A - C - F - A, B - E - G - B, A - B, F - G,
  H - F:G, H - I - J
)
net2 <- graph_from_literal(D - A:F:Y, B - A - X - F - H - Z, F - Y)
print_all(net1 %s% net2)
#> IGRAPH 35225fb UN-- 13 4 -- 
#> + attr: name (v/c)
#> + vertex attributes:
#> |      name
#> | [1]     D
#> | [2]     A
#> | [3]     B
#> | [4]     F
#> | [5]     G
#> | [6]     C
#> | [7]     E
#> | [8]     H
#> | [9]     I
#> | [10]    J
#> | [11]    Y
#> | [12]    X
#> | [13]    Z
#> + edges from 35225fb (vertex names):
#> [1] F--H A--B D--F D--A