These functions are tbl_graph pendants to dplyr::bind_rows() that allows you to grow your tbl_graph by adding rows to either the nodes data, the edges data, or both. As with bind_rows() columns are matched by name and are automatically filled with NA if the column doesn't exist in some instances. In the case of bind_graphs() the graphs are automatically converted to tbl_graph objects prior to binding. The edges in each graph will continue to reference the nodes in the graph where they originated, meaning that their terminal node indexes will be shifted to match the new index of the node in the combined graph. This means the bind_graphs() always result in a disconnected graph. See graph_join() for merging graphs on common nodes.

bind_graphs(.data, ...)

bind_nodes(.data, ...)

bind_edges(.data, ..., node_key = "name")

Arguments

.data

A tbl_graph, or a list of tbl_graph objects (for bind_graphs()).

...

In case of bind_nodes() and bind_edges() data.frames to add. In the case of bind_graphs() objects that are convertible to tbl_graph using as_tbl_graph().

node_key

The name of the column in nodes that character represented to and from columns should be matched against. If NA the first column is always chosen. This setting has no effect if to and from are given as integers.

Value

A tbl_graph containing the new data

Examples

graph <- create_notable('bull')
new_graph <- create_notable('housex')

# Add nodes
graph %>% bind_nodes(data.frame(new = 1:4))
#> # A tbl_graph: 9 nodes and 5 edges
#> #
#> # An undirected simple graph with 5 components
#> #
#> # Node Data: 9 × 1 (active)
#>     new
#>   <int>
#> 1    NA
#> 2    NA
#> 3    NA
#> 4    NA
#> 5    NA
#> 6     1
#> 7     2
#> 8     3
#> 9     4
#> #
#> # Edge Data: 5 × 2
#>    from    to
#>   <int> <int>
#> 1     1     2
#> 2     1     3
#> 3     2     3
#> # ℹ 2 more rows

# Add edges
graph %>% bind_edges(data.frame(from = 1, to = 4:5))
#> # A tbl_graph: 5 nodes and 7 edges
#> #
#> # An undirected simple graph with 1 component
#> #
#> # Node Data: 5 × 0 (active)
#> #
#> # Edge Data: 7 × 2
#>    from    to
#>   <int> <int>
#> 1     1     2
#> 2     1     3
#> 3     2     3
#> # ℹ 4 more rows

# Add graphs
graph %>% bind_graphs(new_graph)
#> # A tbl_graph: 10 nodes and 13 edges
#> #
#> # An undirected simple graph with 2 components
#> #
#> # Node Data: 10 × 0 (active)
#> #
#> # Edge Data: 13 × 2
#>    from    to
#>   <int> <int>
#> 1     1     2
#> 2     1     3
#> 3     2     3
#> # ℹ 10 more rows