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.
This function makes use of an active selection of nodes (and the function
ending with _ws hints at this).
Selections of nodes can be performed using the following node selection
(select_*()) functions: select_nodes(), select_last_nodes_created(),
select_nodes_by_degree(), select_nodes_by_id(), or
select_nodes_in_neighborhood().
Selections of nodes can also be performed using the following traversal
(trav_*()) functions: trav_out(), trav_in(), trav_both(),
trav_out_node(), trav_in_node(), trav_out_until(), or
trav_in_until().
add_node_clones_ws(graph, add_edges = FALSE, direction = NULL, label = NULL)A graph object of class dgr_graph.
An option for whether to add edges from the selected nodes to each of their clones, or, in the opposite 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.
An optional vector of node label values. The vector length should correspond to the number of nodes in the active selection of nodes.
A graph object of class dgr_graph.
Other node creation and removal:
add_n_node_clones(),
add_n_nodes(),
add_n_nodes_ws(),
add_node(),
add_node_df(),
add_nodes_from_df_cols(),
add_nodes_from_table(),
colorize_node_attrs(),
copy_node_attrs(),
create_node_df(),
delete_node(),
delete_nodes_ws(),
drop_node_attrs(),
join_node_attrs(),
layout_nodes_w_string(),
mutate_node_attrs(),
mutate_node_attrs_ws(),
node_data(),
recode_node_attrs(),
rename_node_attrs(),
rescale_node_attrs(),
set_node_attr_to_display(),
set_node_attr_w_fcn(),
set_node_attrs(),
set_node_attrs_ws(),
set_node_position()
# 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()
#> id type label
#> 1 1 a d
#> 2 2 b g
#> 3 3 c r
# 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()
#> id type label
#> 1 1 a d
#> 2 2 b g
#> 3 3 c r
#> 4 4 a a
#> 5 5 b b
#> 6 6 c v
# 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()
#> id from to rel
#> 1 1 1 2 <NA>
#> 2 2 2 3 <NA>
#> 3 3 4 7 <NA>
#> 4 4 5 8 <NA>
#> 5 5 6 9 <NA>