add_node_clones_ws {DiagrammeR} | R Documentation

## Add clones of a selection of nodes

### Description

Add new nodes to a graph object of class `dgr_graph` which are clones of nodes in an active selection of nodes. All node attributes are preserved except for the node `label` attribute (to maintain the uniqueness of non-`NA` node label values). A vector of node `label` can be provided to bind new labels to the cloned nodes.

### Usage

    add_node_clones_ws(graph, add_edges = FALSE, direction = NULL,
      label = NULL)

### Arguments

`graph` | a graph object of class `dgr_graph`.
`add_edges` | an option for whether to add edges from the selected nodes to each of their clones, or, in the opposite direction.
`direction` | using `from` will create new edges from existing nodes to the new, cloned nodes. The `to` option will create new edges directed toward the existing nodes.
`label` | an optional vector of node label values. The vector length should correspond to the number of nodes in the active selection of nodes.

### Value

a graph object of class `dgr_graph`.

### Examples

    # Create a graph with a path of
    # nodes; supply `label`, `type`,
    # and `value` node attributes,
    # and select the created nodes
    graph <-
      create_graph() %>%
      add_path(
        n = 3,
        label = c("d", "g", "r"),
        type = c("a", "b", "c")) %>%
      select_last_nodes_created()

    # Display the graph's internal
    # node data frame
    graph %>%
      get_node_df()

    # Create clones of all nodes
    # in the selection but assign
    # new node label values
    # (leaving `label` as NULL
    # yields NA values)
    graph <-
      graph %>%
      add_node_clones_ws(
        label = c("a", "b", "v"))

    # Display the graph's internal
    # node data frame: nodes `4`,
    # `5`, and `6` are clones of
    # `1`, `2`, and `3`
    graph %>%
      get_node_df()

    # Select the last nodes
    # created (`4`, `5`, and `6`)
    # and clone those nodes and
    # their attributes while
    # creating new edges between
    # the new and existing nodes
    graph <-
      graph %>%
      select_last_nodes_created() %>%
      add_node_clones_ws(
        add_edges = TRUE,
        direction = "to",
        label = c("t", "z", "s"))

    # Display the graph's internal
    # edge data frame; there are
    # edges between the selected
    # nodes and their clones
    graph %>%
      get_edge_df()

[Package DiagrammeR version 1.0.1 Index]