Mutate edge attribute values for a selection of edges
Within a graph's internal edge data frame (edf), mutate edge attribute values only for edges in a selection by using one or more expressions.
mutate_edge_attrs_ws(graph, ...)
graph |
A graph object of class |
... |
Expressions used for the mutation of edge attributes. LHS of each expression is either an existing or new edge attribute name. The RHS can consist of any valid R code that uses edge attributes as variables. Expressions are evaluated in the order provided, so, edge attributes created or modified are ready to use in subsequent expressions. |
This function makes use of an active selection of edges (and the function
ending with _ws
hints at this).
Selections of edges can be performed using the following selection
(select_*()
) functions: select_edges()
, select_last_edges_created()
,
select_edges_by_edge_id()
, or select_edges_by_node_id()
.
Selections of edges can also be performed using the following traversal
(trav_*()
) functions: trav_out_edge()
, trav_in_edge()
,
trav_both_edge()
, or trav_reverse_edge()
.
A graph object of class dgr_graph
.
Other Edge creation and removal:
add_edge_clone()
,
add_edge_df()
,
add_edges_from_table()
,
add_edges_w_string()
,
add_edge()
,
add_forward_edges_ws()
,
add_reverse_edges_ws()
,
copy_edge_attrs()
,
create_edge_df()
,
delete_edges_ws()
,
delete_edge()
,
delete_loop_edges_ws()
,
drop_edge_attrs()
,
edge_data()
,
join_edge_attrs()
,
mutate_edge_attrs()
,
recode_edge_attrs()
,
rename_edge_attrs()
,
rescale_edge_attrs()
,
rev_edge_dir_ws()
,
rev_edge_dir()
,
set_edge_attr_to_display()
,
set_edge_attrs_ws()
,
set_edge_attrs()
# Create a graph with 3 edges # and then select edge `1` graph <- create_graph() %>% add_path(n = 4) %>% set_edge_attrs( edge_attr = width, values = c(3.4, 2.3, 7.2)) %>% select_edges(edges = 1) # Get the graph's internal edf # to show which edge attributes # are available graph %>% get_edge_df() # Mutate the `width` edge # attribute for the edges # only in the active selection # of edges (edge `1`); here, # we divide each value in the # selection by 2 graph <- graph %>% mutate_edge_attrs_ws( width = width / 2) # Get the graph's internal # edf to show that the edge # attribute `width` had its # values changed graph %>% get_edge_df() # Create a new edge attribute, # called `length`, that is the # log of values in `width` plus # 2 (and, also, round all values # to 2 decimal places) graph <- graph %>% clear_selection() %>% select_edges(edges = 2:3) %>% mutate_edge_attrs_ws( length = (log(width) + 2) %>% round(2)) # Get the graph's internal edf # to show that the edge attribute # values had been mutated only # for edges `2` and `3` (since # edge `1` is excluded, an NA # value is applied) graph %>% get_edge_df() # Create a new edge attribute # called `area`, which is the # product of the `width` and # `length` attributes graph <- graph %>% mutate_edge_attrs_ws( area = width * length) # Get the graph's internal edf # to show that the edge attribute # values had been multiplied # together (with new attr `area`) # for nodes `2` and `3` graph %>% get_edge_df() # We can invert the selection # and mutate edge `1` several # times to get an `area` value # for that edge graph <- graph %>% invert_selection() %>% mutate_edge_attrs_ws( length = (log(width) + 5) %>% round(2), area = width * length) # Get the graph's internal edf # to show that the 2 mutations # occurred for edge `1`, yielding # non-NA values for its edge # attributes without changing # those of the other edges graph %>% get_edge_df()
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.