disjoint_union: Disjoint union of graphs

View source: R/operators.R

disjoint_unionR Documentation

Disjoint union of graphs


The union of two or more graphs are created. The graphs are assumed to have disjoint vertex sets.



x %du% y



Graph objects or lists of graph objects.

x, y

Graph objects.


disjoint_union() creates a union of two or more disjoint graphs. Thus first the vertices in the second, third, etc. graphs are relabeled to have completely disjoint graphs. Then a simple union is created. This function can also be used via the ⁠%du%⁠ operator.

graph.disjont.union handles graph, vertex and edge attributes. In particular, it merges vertex and edge attributes using the basic c() function. For graphs that lack some vertex/edge attribute, the corresponding values in the new graph are set to NA. Graph attributes are simply copied to the result. If this would result a name clash, then they are renamed by adding suffixes: _1, _2, etc.

Note that if both graphs have vertex names (i.e. a name vertex attribute), then the concatenated vertex names might be non-unique in the result. A warning is given if this happens.

An error is generated if some input graphs are directed and others are undirected.


A new graph object.


Gabor Csardi csardi.gabor@gmail.com

See Also

Other functions for manipulating graph structure: +.igraph(), add_edges(), add_vertices(), complementer(), compose(), connect(), contract(), delete_edges(), delete_vertices(), difference.igraph(), difference(), edge(), igraph-minus, intersection.igraph(), intersection(), path(), permute(), rep.igraph(), reverse_edges(), simplify(), union.igraph(), union(), vertex()


## A star and a ring
g1 <- make_star(10, mode = "undirected")
V(g1)$name <- letters[1:10]
g2 <- make_ring(10)
V(g2)$name <- letters[11:20]
print_all(g1 %du% g2)

igraph documentation built on Aug. 10, 2023, 9:08 a.m.