Mutate node attribute values for a selection of nodes
Source:R/mutate_node_attrs_ws.R
mutate_node_attrs_ws.Rd
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()
.
Arguments
- graph
A graph object of class
dgr_graph
.- ...
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.
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()
#> id type label width
#> 1 1 <NA> 1 1.4
#> 2 2 <NA> 2 0.3
#> 3 3 <NA> 3 1.1
# 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()
#> id type label width
#> 1 1 <NA> 1 0.7
#> 2 2 <NA> 2 0.3
#> 3 3 <NA> 3 1.1
# 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()
#> id type label width length
#> 1 1 <NA> 1 0.7 NA
#> 2 2 <NA> 2 0.3 0.8
#> 3 3 <NA> 3 1.1 2.1
# 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()
#> id type label width length area
#> 1 1 <NA> 1 0.7 NA NA
#> 2 2 <NA> 2 0.3 0.8 0.24
#> 3 3 <NA> 3 1.1 2.1 2.31
# 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()
#> id type label width length area
#> 1 1 <NA> 1 0.7 4.64 3.248
#> 2 2 <NA> 2 0.3 0.80 0.240
#> 3 3 <NA> 3 1.1 2.10 2.310