map_local {tidygraph} | R Documentation |
Map a function over a graph representing the neighborhood of each node
Description
This function extracts the neighborhood of each node as a graph and maps over
each of these neighborhood graphs. Conceptually it is similar to
igraph::local_scan()
, but it borrows the type safe versions available in
map_bfs()
and map_dfs()
.
Usage
map_local(order = 1, mode = "all", mindist = 0, .f, ...)
map_local_lgl(order = 1, mode = "all", mindist = 0, .f, ...)
map_local_chr(order = 1, mode = "all", mindist = 0, .f, ...)
map_local_int(order = 1, mode = "all", mindist = 0, .f, ...)
map_local_dbl(order = 1, mode = "all", mindist = 0, .f, ...)
Arguments
order |
Integer giving the order of the neighborhood. |
mode |
Character constant, it specifies how to use the direction of
the edges if a directed graph is analyzed. For ‘out’ only the
outgoing edges are followed, so all vertices reachable from the source
vertex in at most |
mindist |
The minimum distance to include the vertex in the result. |
.f |
A function to map over all nodes. See Details |
... |
Additional parameters to pass to |
Details
The function provided to .f
will be called with the following arguments in
addition to those supplied through ...
:
-
neighborhood
: The neighborhood graph of the node -
graph
: The fulltbl_graph
object -
node
: The index of the node currently mapped over
The neighborhood
graph will contain an extra node attribute called
.central_node
, which will be TRUE
for the node that the neighborhood is
expanded from and FALSE
for everything else.
Value
map_local()
returns a list of the same length as the number of
nodes in the graph, in the order matching the node order in the graph.
map_local_*()
tries to coerce its result into a vector of the classes
logical
(map_local_lgl
), character
(map_local_chr
), integer
(map_local_int
), or double
(map_local_dbl
). These functions will throw
an error if they are unsuccesful, so they are type safe.
Examples
# Smooth out values over a neighborhood
create_notable('meredith') %>%
mutate(value = rpois(graph_order(), 5)) %>%
mutate(value_smooth = map_local_dbl(order = 2, .f = function(neighborhood, ...) {
mean(as_tibble(neighborhood, active = 'nodes')$value)
}))