Skip to contents

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 using the
# `add_gnm_graph()` function
graph <-
  create_graph() %>%
  add_gnm_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
graph %>% get_node_df()
#>   id type label     shape
#> 1  1 <NA>     1    circle
#> 2  2 <NA>     2   hexagon
#> 3  3 <NA>     3 rectangle
#> 4  4 <NA>     4 rectangle
#> 5  5 <NA>     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
graph %>% get_node_df()
#>   id type label    shape
#> 1  1 <NA>     1   square
#> 2  2 <NA>     2  hexagon
#> 3  3 <NA>     3 triangle
#> 4  4 <NA>     4 triangle
#> 5  5 <NA>     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
graph %>% get_node_df()
#>   id type label    shape color
#> 1  1 <NA>     1   square   red
#> 2  2 <NA>     2  hexagon green
#> 3  3 <NA>     3 triangle green
#> 4  4 <NA>     4 triangle green
#> 5  5 <NA>     5   square   red