This function creates a new graph, by merging several vertices into one. The vertices in the new graph correspond to sets of vertices in the input graph.
Usage
contract(graph, mapping, vertex.attr.comb = igraph_opt("vertex.attr.comb"))
Arguments
- graph
The input graph, it can be directed or undirected.
- mapping
A numeric vector that specifies the mapping. Its elements correspond to the vertices, and for each element the id in the new graph is given.
- vertex.attr.comb
Specifies how to combine the vertex attributes in the new graph. Please see
attribute.combination()
for details.
Details
The attributes of the graph are kept. Graph and edge attributes are
unchanged, vertex attributes are combined, according to the
vertex.attr.comb
parameter.
See also
Other functions for manipulating graph structure:
+.igraph()
,
add_edges()
,
add_vertices()
,
complementer()
,
compose()
,
connect()
,
delete_edges()
,
delete_vertices()
,
difference()
,
difference.igraph()
,
disjoint_union()
,
edge()
,
igraph-minus
,
intersection()
,
intersection.igraph()
,
path()
,
permute()
,
rep.igraph()
,
reverse_edges()
,
simplify()
,
union()
,
union.igraph()
,
vertex()
Author
Gabor Csardi csardi.gabor@gmail.com
Examples
g <- make_ring(10)
g$name <- "Ring"
V(g)$name <- letters[1:vcount(g)]
E(g)$weight <- runif(ecount(g))
g2 <- contract(g, rep(1:5, each = 2),
vertex.attr.comb = toString
)
## graph and edge attributes are kept, vertex attributes are
## combined using the 'toString' function.
print(g2, g = TRUE, v = TRUE, e = TRUE)
#> IGRAPH 8760eed UNW- 5 10 -- Ring
#> + attr: name (g/c), mutual (g/l), circular (g/l), name (v/c), weight
#> | (e/n)
#> + edges from 8760eed (vertex names):
#> [1] a, b--a, b a, b--c, d c, d--c, d c, d--e, f e, f--e, f e, f--g, h
#> [7] g, h--g, h g, h--i, j i, j--i, j a, b--i, j