An edge sequence is a vector containing numeric edge ids, with a special class attribute that allows custom operations: selecting subsets of edges based on attributes, or graph structure, creating the intersection, union of edges, etc.

## Arguments

- graph
The graph.

- P
A list of vertices to select edges via pairs of vertices. The first and second vertices select the first edge, the third and fourth the second, etc.

- path
A list of vertices, to select edges along a path. Note that this only works reliable for simple graphs. If the graph has multiple edges, one of them will be chosen arbitrarily to be included in the edge sequence.

- directed
Whether to consider edge directions in the

`P`

argument, for directed graphs.

## Details

Edge sequences are usually used as igraph function arguments that refer to edges of a graph.

An edge sequence is tied to the graph it refers to: it really denoted the specific edges of that graph, and cannot be used together with another graph.

An edge sequence is most often created by the `E()`

function. The
result includes edges in increasing edge id order by default (if. none
of the `P`

and `path`

arguments are used). An edge
sequence can be indexed by a numeric vector, just like a regular R
vector. See links to other edge sequence operations below.

## Indexing edge sequences

Edge sequences mostly behave like regular vectors, but there are some
additional indexing operations that are specific for them;
e.g. selecting edges based on graph structure, or based on edge
attributes. See `[.igraph.es`

for details.

## Querying or setting attributes

Edge sequences can be used to query or set attributes for the
edges in the sequence. See `$.igraph.es()`

for details.

## See also

Other vertex and edge sequences:
`V()`

,
`as_ids()`

,
`igraph-es-attributes`

,
`igraph-es-indexing`

,
`igraph-es-indexing2`

,
`igraph-vs-attributes`

,
`igraph-vs-indexing`

,
`igraph-vs-indexing2`

,
`print.igraph.es()`

,
`print.igraph.vs()`

## Examples

```
# Edges of an unnamed graph
g <- make_ring(10)
E(g)
#> + 10/10 edges from 1a0d951:
#> [1] 1-- 2 2-- 3 3-- 4 4-- 5 5-- 6 6-- 7 7-- 8 8-- 9 9--10 1--10
# Edges of a named graph
g2 <- make_ring(10) %>%
set_vertex_attr("name", value = letters[1:10])
E(g2)
#> + 10/10 edges from cbbf726 (vertex names):
#> [1] a--b b--c c--d d--e e--f f--g g--h h--i i--j a--j
```