Traverse from one or more selected nodes onto adjacent, inward edges
From a graph object of class dgr_graph
move to incoming edges from a
selection of one or more selected nodes, thereby creating a selection of
edges. An optional filter by edge attribute can limit the set of edges
traversed to.
trav_in_edge( graph, conditions = NULL, copy_attrs_from = NULL, copy_attrs_as = NULL )
graph |
A graph object of class |
conditions |
An option to use filtering conditions for the traversal. |
copy_attrs_from |
Providing a node attribute name will copy those node attribute values to the traversed edges. If the edge attribute already exists, the values will be merged to the traversed edges; otherwise, a new edge attribute will be created. |
copy_attrs_as |
If a node attribute name is provided in
|
This traversal function makes use of an active selection of nodes. After the traversal, depending on the traversal conditions, there will either be a selection of edges or no selection at all.
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()
.
A graph object of class dgr_graph
.
# Set a seed suppressWarnings(RNGversion("3.5.0")) set.seed(23) # Create a simple graph graph <- create_graph() %>% add_n_nodes( n = 2, type = "a", label = c("asd", "iekd")) %>% add_n_nodes( n = 3, type = "b", label = c("idj", "edl", "ohd")) %>% add_edges_w_string( edges = "1->2 1->3 2->4 2->5 3->5", rel = c(NA, "A", "B", "C", "D")) # 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 = round(rnorm(5, 5), 2)) # Join the data frame to the graph's # internal edge data frame (edf) graph <- graph %>% join_edge_attrs(df = df) # Show the graph's internal edge data frame graph %>% get_edge_df() # Perform a simple traversal from # nodes to inbound edges with no # conditions on the nodes # traversed to graph %>% select_nodes_by_id(nodes = 2) %>% trav_in_edge() %>% get_selection() # Traverse from node `2` to any # inbound edges, filtering to # those edges that have NA values # for the `rel` edge attribute graph %>% select_nodes_by_id(nodes = 2) %>% trav_in_edge( conditions = is.na(rel)) %>% get_selection() # Traverse from node `2` to any # inbound edges, filtering to those # edges that do not have NA values # for the `rel` edge attribute # (since there are no allowed # traversals, the selection of node # `2` is retained) graph %>% select_nodes_by_id(nodes = 2) %>% trav_in_edge( conditions = !is.na(rel)) %>% get_selection() # Traverse from node `5` to any # inbound edges, filtering to those # edges that have numeric values # greater than `5.5` for the `rel` # edge attribute graph %>% select_nodes_by_id(nodes = 5) %>% trav_in_edge( conditions = values > 5.5) %>% get_selection() # Traverse from node `5` to any # inbound edges, filtering to those # edges that have values equal to # `D` for the `rel` edge attribute graph %>% select_nodes_by_id(nodes = 5) %>% trav_in_edge( conditions = rel == "D") %>% get_selection() # Traverse from node `5` to any # inbound edges, filtering to those # edges that have values in the set # `C` and `D` for the `rel` edge # attribute graph %>% select_nodes_by_id(nodes = 5) %>% trav_in_edge( conditions = rel %in% c("C", "D")) %>% get_selection() # Traverse from node `5` to any # inbound edges, and use multiple # conditions for the traversal graph %>% select_nodes_by_id(nodes = 5) %>% trav_in_edge( conditions = rel %in% c("C", "D") & values > 5.5) %>% get_selection() # Traverse from node `5` to any # inbound edges, and use multiple # conditions with a single-length # vector graph %>% select_nodes_by_id(nodes = 5) %>% trav_in_edge( conditions = rel %in% c("D", "E") | values > 5.5) %>% get_selection() # Traverse from node `5` to any # inbound edges, and use a regular # expression as a filtering condition graph %>% select_nodes_by_id(nodes = 5) %>% trav_in_edge( conditions = grepl("C|D", rel)) %>% get_selection() # Show the graph's internal ndf graph %>% get_node_df() # Show the graph's internal edf graph %>% get_edge_df() # Perform a traversal from all # nodes to their incoming edges and, # while doing so, copy the `label` # node attribute to any of the nodes' # incoming edges graph <- graph %>% select_nodes() %>% trav_in_edge( copy_attrs_from = label) # Show the graph's internal edge # data frame after this change graph %>% get_edge_df()
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.