# NOT RUN {
# Create a new graph object and add a directed and
# fully connected graph with 3 nodes and edges to
# and from all pairs of nodes; with the option
# `keep_loops = TRUE` nodes will also have edges
# from and to themselves
graph <-
create_graph() %>%
add_full_graph(
n = 3, keep_loops = TRUE)
# Get node information from this graph
node_info(graph)
#> id type label deg indeg outdeg loops
#> 1 1 <NA> 1 6 3 3 1
#> 2 2 <NA> 2 6 3 3 1
#> 3 3 <NA> 3 6 3 3 1
# Using `keep_loops = FALSE` (the default)
# will remove the loops
create_graph() %>%
add_full_graph(3) %>%
node_info()
#> id type label deg indeg outdeg loops
#> 1 1 <NA> 1 4 2 2 0
#> 2 2 <NA> 2 4 2 2 0
#> 3 3 <NA> 3 4 2 2 0
# Values can be set for the node `label`,
# node `type`, and edge `rel`
graph <-
create_graph() %>%
add_full_graph(
n = 3,
type = "connected",
label = c("1st", "2nd", "3rd"),
rel = "connected_to")
# Show the graph's node data frame (ndf)
graph %>% get_node_df()
#> id type label
#> 1 1 connected 1st
#> 2 2 connected 2nd
#> 3 3 connected 3rd
# Show the graph's edge data frame (edf)
graph %>% get_edge_df()
#> id from to rel
#> 1 1 1 2 connected_to
#> 2 2 1 3 connected_to
#> 3 3 2 1 connected_to
#> 4 4 2 3 connected_to
#> 5 5 3 1 connected_to
#> 6 6 3 2 connected_to
# Create a fully-connected and directed
# graph with 3 nodes, and, where a matrix
# provides edge weights; first, create the
# matrix (with row names to be used as
# node labels)
set.seed(23)
edge_wt_matrix <-
rnorm(100, 5, 2) %>%
sample(9, FALSE) %>%
round(2) %>%
matrix(
nc = 3, nr = 3,
dimnames = list(c("a", "b", "c")))
# Create the fully-connected graph (without
# loops however)
graph <-
create_graph() %>%
add_full_graph(
n = 3,
type = "weighted",
label = TRUE,
rel = "related_to",
edge_wt_matrix = edge_wt_matrix,
keep_loops = FALSE)
# Show the graph's node data frame (ndf)
graph %>% get_node_df
#> id type label
#> 1 1 weighted a
#> 2 2 weighted b
#> 3 3 weighted c
# Show the graph's edge data frame (edf)
graph %>% get_edge_df()
#> id from to rel weight
#> 1 1 1 2 related_to 3.30
#> 2 2 1 3 related_to 5.02
#> 3 3 2 1 related_to 4.13
#> 4 4 2 3 related_to 6.49
#> 5 5 3 1 related_to 6.03
#> 6 6 3 2 related_to 5.55
# An undirected graph can also use a
# matrix with edge weights, but only
# the lower triangle of that matrix
# will be used
create_graph(directed = FALSE) %>%
add_full_graph(
n = 3,
type = "weighted",
label = TRUE,
rel = "related_to",
edge_wt_matrix = edge_wt_matrix,
keep_loops = FALSE) %>%
get_edge_df()
#> id from to rel weight
#> 1 1 1 2 related_to 3.30
#> 2 2 1 3 related_to 5.02
#> 3 3 2 3 related_to 6.49
# }
Run the code above in your browser using DataLab