Join new edge attribute values in a left join using a data frame. The use of a left join in this function allows for no possibility that edges in the graph might be removed after the join.
join_edge_attrs(graph, df, by_graph = NULL, by_df = NULL)A graph object of class dgr_graph.
The data frame to use for joining.
Optional specification of the column in the graph's internal
edge data frame for the left join. If both by_graph and by_df are not
provided, then a natural join will occur if there are columns in the
graph's edf and in df with identical names.
Optional specification of the column in df for the left join.
If both by_graph and by_df are not provided, then a natural join will
occur if there are columns in the graph's edf and in df with identical
names.
A graph object of class dgr_graph.
Other edge creation and removal:
add_edge(),
add_edge_clone(),
add_edge_df(),
add_edges_from_table(),
add_edges_w_string(),
add_forward_edges_ws(),
add_reverse_edges_ws(),
copy_edge_attrs(),
create_edge_df(),
delete_edge(),
delete_edges_ws(),
delete_loop_edges_ws(),
drop_edge_attrs(),
edge_data(),
mutate_edge_attrs(),
mutate_edge_attrs_ws(),
recode_edge_attrs(),
rename_edge_attrs(),
rescale_edge_attrs(),
rev_edge_dir(),
rev_edge_dir_ws(),
set_edge_attr_to_display(),
set_edge_attrs(),
set_edge_attrs_ws()
# Set a seed
suppressWarnings(RNGversion("3.5.0"))
set.seed(23)
# Create a simple graph
graph <-
create_graph() %>%
add_n_nodes(n = 5) %>%
add_edges_w_string(
edges = "1->2 1->3 2->4 2->5 3->5")
# Create a data frame with node ID values
# representing the graph edges (with `from` and `to`
# columns), and, a set of numeric values
df <-
data.frame(
from = c(1, 1, 2, 2, 3),
to = c(2, 3, 4, 5, 5),
values = rnorm(5, 5))
# Join the values in the data frame to the
# graph's edges; this works as a left join using
# identically-named columns in the graph and the df
# (in this case `from` and `to` are common to both)
graph <-
graph %>%
join_edge_attrs(
df = df)
# Get the graph's internal edf to show that the
# join has been made
graph %>% get_edge_df()
#> id from to rel values
#> 1 1 1 2 <NA> 5.996605
#> 2 2 1 3 <NA> 6.107490
#> 3 3 2 4 <NA> 4.721914
#> 4 4 2 5 <NA> 6.019205
#> 5 5 3 5 <NA> 5.045437