DiagrammeR (version 0.9.2)

mutate_edge_attrs: 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

Run this code
# NOT RUN {
# 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
# }

Run the code above in your browser using DataCamp Workspace