cograph's verbs for reshaping a network. Every verb takes any supported
input (matrix, edge list, igraph, statnet network, tna model,
cograph_network), takes its options as named arguments, and returns a
cograph_network — or the input format when
keep_format = TRUE. There is no pipeline state to activate and
nothing to unpack afterwards: use as.data.frame() for the tidy edge
or node table.
Value
Each verb returns a cograph_network, except
split_components(), which returns a list of them. With
keep_format = TRUE a matrix, igraph, statnet network or tna input
comes back in that format.
Selecting
filter_nodes(),select_nodes()Keep nodes by expression, name, index, top-N, neighborhood or component.
filter_edges(),select_edges()Keep edges by expression, endpoints, bridges, mutuality or top-N.
select_neighbors(),select_component(),select_top(),select_k_core()Named shorthands for the common selections.
split_components()One network per connected component.
Weights
threshold_edges()Keep edges by weight, count, proportion or density.
binarize()Replace weights with 0/1.
symmetrize()Combine opposite arcs into one edge.
normalize_weights()Rescale by row, column, maximum, total, or to [0, 1].
invert_weights()Turn similarities into distances.
Structure
to_undirected(),to_directed(),reverse_edges()Change directedness.
remove_isolates()Drop nodes with no edges.
contract_nodes()Collapse groups of nodes into one.
spanning_tree(),complement_network()Derived graphs.
reorder_nodes(),rename_nodes()Change node order or labels without changing the network.
simplify()Merge duplicate edges and drop loops.
Editing
add_nodes(),remove_nodes(),add_edges(),remove_edges()Add and remove.
mutate_nodes(),mutate_edges()Compute and store attributes.
bind_networks()Union, intersection or difference of two networks.
Conversion and access
as_cograph(), to_matrix(),
to_igraph(), to_network(),
to_df(), and as.data.frame() on a
cograph_network (see as.data.frame.cograph_network).
Semantics worth knowing
Filtering edges does not remove nodes. This matches
igraph::delete_edges()and tidygraph. Nodes left without edges raise acograph_isolates_createdwarning; callremove_isolates()to drop them, or passkeep_isolates = FALSE.Undirected results stay undirected. The weight matrix of an undirected result is symmetric, so nothing downstream re-detects it as directed.
Metadata survives. Node groups, estimation data, layout coordinates and the original source type are carried through every verb.
Malformed selections are errors. Unknown node names, out-of- range or fractional indices, unknown measure names and a malformed
betweenraise acograph_bad_selectionerror rather than warning and returning something plausible.
Related verbs elsewhere
ego_networks(), shortest_paths(),
disparity_filter(), detect_communities(),
summarize_clusters(), aggregate_layers().
Examples
adj <- matrix(c(0, .5, .8, 0,
.5, 0, .3, .6,
.8, .3, 0, .4,
0, .6, .4, 0), 4, 4, byrow = TRUE)
rownames(adj) <- colnames(adj) <- c("A", "B", "C", "D")
# One call, named arguments, a tidy table out
as.data.frame(threshold_edges(adj, minimum = 0.4))
#> from to weight
#> 1 A B 0.5
#> 2 A C 0.8
#> 3 B D 0.6
#> 4 C D 0.4
# Verbs compose
adj |>
threshold_edges(minimum = 0.4) |>
remove_isolates() |>
mutate_nodes(deg = degree) |>
as.data.frame(what = "nodes")
#> id label name x y deg
#> 1 1 A A NA NA 2
#> 2 2 B B NA NA 2
#> 3 3 C C NA NA 2
#> 4 4 D D NA NA 2
