recode_node_attrs {DiagrammeR} | R Documentation

## Recode a set of node attribute values

### Description

Within a graph's internal node data frame (ndf), recode character or numeric node attribute values. Optionally, one can specify a replacement value for any unmatched mappings.

### Usage

    recode_node_attrs(graph, node_attr_from, ..., otherwise = NULL,
      node_attr_to = NULL)

### Arguments

`graph` | a graph object of class `dgr_graph`.
`node_attr_from` | the name of the node attribute column from which values will be recoded.
`...` | single-length character vectors with the recoding instructions. The first component should have the value to replace and the second should have the replacement value (in the form `"[to_replace] -> [replacement]", ...`).
`otherwise` | an optional single value for recoding any unmatched values.
`node_attr_to` | an optional name of a new node attribute to which the recoded values will be applied. This will retain the original node attribute and its values.

### Value

a graph object of class `dgr_graph`.

### Examples

    # Create a random graph
    graph <-
      create_random_graph(
        n = 5, m = 10,
        set_seed = 23) %>%
      set_node_attrs(
        node_attr = shape,
        values =
          c("circle", "hexagon",
            "rectangle", "rectangle",
            "circle"))

    # Get the graph's internal ndf to show which
    # node attributes are available
    get_node_df(graph)
    #>   id type label value     shape
    #> 1  1 <NA>     1   6.0    circle
    #> 2  2 <NA>     2   2.5   hexagon
    #> 3  3 <NA>     3   3.5 rectangle
    #> 4  4 <NA>     4   7.5 rectangle
    #> 5  5 <NA>     5   8.5    circle

    # Recode the `shape` node attribute, so that
    # `circle` is recoded to `square` and that
    # `rectangle` becomes `triangle`
    graph <-
      graph %>%
      recode_node_attrs(
        node_attr_from = shape,
        "circle -> square",
        "rectangle -> triangle")

    # Get the graph's internal ndf to show that the
    # node attribute values had been recoded
    get_node_df(graph)
    #>   id type label value    shape
    #> 1  1 <NA>     1   6.0   square
    #> 2  2 <NA>     2   2.5  hexagon
    #> 3  3 <NA>     3   3.5 triangle
    #> 4  4 <NA>     4   7.5 triangle
    #> 5  5 <NA>     5   8.5   square

    # Create a new node attribute, called `color`,
    # that is based on a recoding of `shape`; here,
    # map the square shape to a `red` color and map
    # all other shapes to a `green` color
    graph <-
      graph %>%
      recode_node_attrs(
        node_attr_from = shape,
        "square -> red",
        otherwise = "green",
        node_attr_to = color)

    # Get the graph's internal ndf to see the change
    get_node_df(graph)
    #>   id type label value    shape color
    #> 1  1 <NA>     1   6.0   square   red
    #> 2  2 <NA>     2   2.5  hexagon green
    #> 3  3 <NA>     3   3.5 triangle green
    #> 4  4 <NA>     4   7.5 triangle green
    #> 5  5 <NA>     5   8.5   square   red

    # Numeric values can be recoded as well;
    # here, perform several recodings for
    # values of the `value` node attribute
    graph <-
      graph %>%
      recode_node_attrs(
        node_attr_from = value,
        "6.0 -> 9.5",
        "3.5 -> 10.5",
        otherwise = 5.0)

    # Look at the graph's internal ndf
    get_node_df(graph)
    #>   id type label value    shape color
    #> 1  1 <NA>     1   9.5   square   red
    #> 2  2 <NA>     2   5.0  hexagon green
    #> 3  3 <NA>     3  10.5 triangle green
    #> 4  4 <NA>     4   5.0 triangle green
    #> 5  5 <NA>     5   5.0   square   red

[Package DiagrammeR version 0.9.2 Index]