The intersection of two or more graphs are created. The graphs may have identical or overlapping vertex sets.
Usage
# S3 method for class 'igraph'
intersection(
...,
byname = "auto",
keep.all.vertices = TRUE,
graph.attr.comb = igraph_opt("graph.attr.comb"),
vertex.attr.comb = "rename",
edge.attr.comb = "rename"
)Arguments
- ...
Graph objects or lists of graph objects.
- byname
A Logical, or the character scalar
auto. Whether to perform the operation based on symbolic vertex names. If it isauto, that meansTRUEif all graphs are named andFALSEotherwise. A warning is generated ifautoand some (but not all) graphs are named.- keep.all.vertices
Logical, whether to keep vertices that only appear in a subset of the input graphs.
- graph.attr.comb, vertex.attr.comb, edge.attr.comb
Specification for combining clashing graph, vertex and edge attributes.
vertex.attr.combandedge.attr.combdefault to"rename";graph.attr.combdefaults to thegraph.attr.combigraph option ("rename"unless changed viaigraph_options()). See igraph-attribute-combination for the available combiners.
Details
intersection() creates the intersection of two or more graphs:
only edges present in all graphs will be included. The corresponding
operator is %s%.
If the byname argument is TRUE (or auto and all graphs
are named), then the operation is performed on symbolic vertex names instead
of the internal numeric vertex IDs.
intersection() keeps the attributes of all graphs. All graph,
vertex and edge attributes are copied to the result. By default, if an
attribute is present in multiple graphs and would result in a name clash,
that attribute is renamed by adding suffixes: _1, _2, etc. Pass
graph.attr.comb, vertex.attr.comb or edge.attr.comb to combine
clashing attributes instead; see igraph-attribute-combination for the
available combiners.
The name vertex attribute is treated specially if the operation is
performed based on symbolic vertex names. In this case name must be
present in all graphs, and it is not renamed in the result graph.
An error is generated if some input graphs are directed and others are undirected.
See also
Other functions for manipulating graph structure:
+.igraph(),
add_edges(),
add_vertices(),
complementer(),
compose(),
connect(),
contract(),
delete_edges(),
delete_vertices(),
difference(),
difference.igraph(),
disjoint_union(),
edge(),
igraph-minus,
intersection(),
path(),
permute(),
rep.igraph(),
reverse_edges(),
simplify(),
transitive_closure(),
union(),
union.igraph(),
vertex()
Author
Gabor Csardi csardi.gabor@gmail.com
Examples
## 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> ───────────────────────────────────────────────────────── bd31097 ──
#> ℹ undirected · named
#> ℹ 13 vertices · 4 edges
#>
#> ── Attributes ──────────────────────────────────────────────────────────────────
#> → vertex: name <chr>
#>
#> ── 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 (vertex names) ────────────────────────────────────────────────────────
#> [1] F ─ H A ─ B D ─ F D ─ A
