The focus()
/unfocus()
idiom allow you to temporarily tell tidygraph
algorithms to only calculate on a subset of the data, while keeping the full
graph intact. The purpose of this is to avoid having to calculate time
costly measures etc on all nodes or edges of a graph if only a few is needed.
E.g. you might only be interested in the shortest distance from one node to
another so rather than calculating this for all nodes you apply a focus on
one node and perform the calculation. It should be made clear that not all
algorithms will see a performance boost by being applied to a few nodes/edges
since their calculation is applied globally and the result for all
nodes/edges are provided in unison.
focus(.data, ...)
# S3 method for tbl_graph
focus(.data, ...)
# S3 method for morphed_tbl_graph
focus(.data, ...)
unfocus(.data, ...)
# S3 method for tbl_graph
unfocus(.data, ...)
# S3 method for focused_tbl_graph
unfocus(.data, ...)
# S3 method for morphed_tbl_graph
unfocus(.data, ...)
A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr). See Methods, below, for more details.
<data-masking
> Expressions that
return a logical value, and are defined in terms of the variables in
.data
. If multiple expressions are included, they are combined with the
&
operator. Only rows for which all conditions evaluate to TRUE
are
kept.
A graph with focus applied
focusing is the lowest prioritised operation on a graph. Applying a
morph()
or a group_by()
operation will unfocus the graph prior to
performing the operation. The same is true for the inverse operations
(unmorph()
and ungroup()
). Further, unfocusing will happen any time some
graph altering operation is performed, such as the arrange()
and slice()
operations