The union of two or more graphs are created. The graphs may have identical or overlapping vertex sets.

## Usage

```
# S3 method for igraph
union(..., byname = "auto")
```

## Arguments

- ...
Graph objects or lists of graph objects.

- byname
A logical scalar, or the character scalar

`auto`

. Whether to perform the operation based on symbolic vertex names. If it is`auto`

, that means`TRUE`

if all graphs are named and`FALSE`

otherwise. A warning is generated if`auto`

and some (but not all) graphs are named.

## Details

`union()`

creates the union of two or more graphs. Edges which are
included in at least one graph will be part of the new graph. This function
can be also used via the `%u%`

operator.

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.

`union()`

keeps the attributes of all graphs. All graph, vertex and
edge attributes are copied to the result. If an attribute is present in
multiple graphs and would result a name clash, then this attribute is
renamed by adding suffixes: _1, _2, etc.

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.igraph()`

,
`difference()`

,
`disjoint_union()`

,
`edge()`

,
`igraph-minus`

,
`intersection.igraph()`

,
`intersection()`

,
`path()`

,
`permute()`

,
`rep.igraph()`

,
`reverse_edges()`

,
`simplify()`

,
`union()`

,
`vertex()`

## Author

Gabor Csardi csardi.gabor@gmail.com

## Examples

```
## Union of two social networks with overlapping sets of actors
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 %u% net2)
#> IGRAPH d401d6c UN-- 13 21 --
#> + 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 d401d6c (vertex names):
#> [1] I--J H--Z H--I G--H G--E F--X F--Y F--H F--C F--G B--E B--G A--X A--C A--F
#> [16] A--B D--Y D--G D--F D--B D--A
```