DiagrammeR (version 0.9.2)

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

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

Run the code above in your browser using DataCamp Workspace