map_local
Map a function over a graph representing the neighborhood of each node
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
order
steps are counted. For ‘"in"’ all vertices from which the source vertex is reachable in at mostorder
steps are counted. ‘"all"’ ignores the direction of the edges. This argument is ignored for undirected graphs.- 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
.f
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 nodegraph
: The fulltbl_graph
objectnode
: The index of the node currently mapped over
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
# NOT RUN {
# 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)
}))
# }