mutate_node_attrs_ws {DiagrammeR} | R Documentation |
Mutate node attribute values for a selection of nodes
Description
Within a graph's internal node data frame (ndf), mutate node attribute values only for nodes in a selection by using one or more expressions.
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()
.
Usage
mutate_node_attrs_ws(graph, ...)
Arguments
graph |
A graph object of class |
... |
Expressions used for the mutation of node attributes. LHS of each expression is either an existing or new node attribute name. The RHS can consist of any valid R code that uses node attributes as variables. Expressions are evaluated in the order provided, so, node attributes created or modified are ready to use in subsequent expressions. |
Value
A graph object of class dgr_graph
.
See Also
Other node creation and removal:
add_n_node_clones()
,
add_n_nodes()
,
add_n_nodes_ws()
,
add_node()
,
add_node_clones_ws()
,
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()
,
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 3 nodes
# and then select node `1`
graph <-
create_graph() %>%
add_path(n = 3) %>%
set_node_attrs(
node_attr = width,
values = c(1.4, 0.3, 1.1)) %>%
select_nodes(nodes = 1)
# Get the graph's internal ndf
# to show which node attributes
# are available
graph %>% get_node_df()
# Mutate the `width` node
# attribute for the nodes
# only in the active selection
# of nodes (node `1`); here,
# we divide each value in the
# selection by 2
graph <-
graph %>%
mutate_node_attrs_ws(
width = width / 2)
# Get the graph's internal
# ndf to show that the node
# attribute `width` was
# mutated only for node `1`
graph %>% get_node_df()
# Create a new node 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_nodes(nodes = 2:3) %>%
mutate_node_attrs_ws(
length = (log(width) + 2) %>%
round(2))
# Get the graph's internal ndf
# to show that the node attribute
# values had been mutated only
# for nodes `2` and `3` (since
# node `1` is excluded, an NA
# value is applied)
graph %>% get_node_df()
# Create a new node attribute
# called `area`, which is the
# product of the `width` and
# `length` attributes
graph <-
graph %>%
mutate_node_attrs_ws(
area = width * length)
# Get the graph's internal ndf
# to show that the node attribute
# values had been multiplied
# together (with new attr `area`)
# for nodes `2` and `3`
graph %>% get_node_df()
# We can invert the selection
# and mutate node `1` several
# times to get an `area` value
# for that node
graph <-
graph %>%
invert_selection() %>%
mutate_node_attrs_ws(
length = (log(width) + 5) %>%
round(2),
area = width * length)
# Get the graph's internal ndf
# to show that the 2 mutations
# occurred for node `1`, yielding
# non-NA values for its node
# attributes without changing
# those of the other nodes
graph %>% get_node_df()