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()
.
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. Theto
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.
See also
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()
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()
#> 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>