mutate_edge_attrs {DiagrammeR} | R Documentation

## Mutate a set of edge attribute values

### Description

Within a graph's internal edge data frame (edf), mutate numeric edge attribute values using one or more expressions.

### Usage

    mutate_edge_attrs(graph, ...)

### Arguments

`graph` | a graph object of class `dgr_graph`.
`...` | expressions used for the mutation of edge attributes. LHS of each expression is either an existing or new edge attribute name. The RHS can consist of any valid R code that uses edge attributes as variables. Expressions are evaluated in the order provided, so, edge attributes created or modified are ready to use in subsequent expressions.

### Value

a graph object of class `dgr_graph`.

### Examples

    # Create a graph with 3 edges
    graph <-
      create_graph() %>%
      add_path(n = 4) %>%
      set_edge_attrs(
        edge_attr = width,
        values = c(3.4, 2.3, 7.2))

    # Get the graph's internal edf
    # to show which edge attributes
    # are available
    get_edge_df(graph)
    #>   id from to  rel width
    #> 1  1    1  2 <NA>   3.4
    #> 2  2    2  3 <NA>   2.3
    #> 3  3    3  4 <NA>   7.2

    # Mutate the `width` edge
    # attribute, dividing each
    # value by 2
    graph <-
      graph %>%
      mutate_edge_attrs(
        width = width / 2)

    # Get the graph's internal
    # edf to show that the edge
    # attribute `width` had its
    # values changed
    get_edge_df(graph)
    #>   id from to  rel width
    #> 1  1    1  2 <NA>  1.70
    #> 2  2    2  3 <NA>  1.15
    #> 3  3    3  4 <NA>  3.60

    # Create a new edge attribute,
    # called `length`, that is the
    # log of values in `width` plus
    # 2 (and, also, round all values
    # to 2 decimal places)
    graph <-
      graph %>%
      mutate_edge_attrs(
        length = (log(width) + 2) %>%
                   round(2))

    # Get the graph's internal edf
    # to show that the edge attribute
    # values had been mutated
    get_edge_df(graph)
    #>   id from to  rel width length
    #> 1  1    1  2 <NA>  1.70   2.53
    #> 2  2    2  3 <NA>  1.15   2.14
    #> 3  3    3  4 <NA>  3.60   3.28

    # Create a new edge attribute
    # called `area`, which is the
    # product of the `width` and
    # `length` attributes
    graph <-
      graph %>%
      mutate_edge_attrs(
        area = width * length)

    # Get the graph's internal edf
    # to show that the edge attribute
    # values had been multiplied
    # together (with new attr `area`)
    get_edge_df(graph)
    #>   id from to  rel width length   area
    #> 1  1    1  2 <NA>  1.70   2.53  4.301
    #> 2  2    2  3 <NA>  1.15   2.14  2.461
    #> 3  3    3  4 <NA>  3.60   3.28 11.808

[Package DiagrammeR version 0.9.2 Index]