To an existing graph object, add a graph built according to the Barabasi-Albert model, which uses preferential attachment in its stochastic algorithm.
Usage
add_pa_graph(
graph,
n,
m = NULL,
power = 1,
out_dist = NULL,
use_total_degree = FALSE,
zero_appeal = 1,
algo = "psumtree",
type = NULL,
label = TRUE,
rel = NULL,
node_aes = NULL,
edge_aes = NULL,
node_data = NULL,
edge_data = NULL,
set_seed = NULL
)
Arguments
- graph
A graph object of class
dgr_graph
.- n
The number of nodes comprising the preferential attachment graph.
- m
The number of edges to add in each time step.
- power
The power of the preferential attachment. The default value of
1
indicates a linear preferential attachment.- out_dist
A numeric vector that provides the distribution of the number of edges to add in each time step.
- use_total_degree
A logical value (default is
TRUE
) that governs whether the total degree should be used for calculating the citation probability. IfFALSE
, the indegree is used.- zero_appeal
A measure of the attractiveness of the nodes with no adjacent edges.
- algo
The algorithm to use to generate the graph. The available options are
psumtree
,psumtree-multiple
, andbag
. With thepsumtree
algorithm, a partial prefix-sum tree is used to to create the graph. Any values forpower
andzero_appeal
can be provided and this algorithm never generates multiple edges. Thepsumtree-multiple
algorithm also uses a partial prefix-sum tree but the difference here is that multiple edges are allowed. Thebag
algorithm places the node IDs into a bag as many times as their in-degree (plus once more). The required number of cited nodes are drawn from the bag with replacement. Multiple edges may be produced using this method (it is not disallowed).- type
An optional string that describes the entity type for all the nodes to be added.
- label
A logical value where setting to
TRUE
ascribes node IDs to the label andFALSE
yields a blank label.- rel
An optional string for providing a relationship label to all edges to be added.
- node_aes
An optional list of named vectors comprising node aesthetic attributes. The helper function
node_aes()
is strongly recommended for use here as it contains arguments for each of the accepted node aesthetic attributes (e.g.,shape
,style
,color
,fillcolor
).- edge_aes
An optional list of named vectors comprising edge aesthetic attributes. The helper function
edge_aes()
is strongly recommended for use here as it contains arguments for each of the accepted edge aesthetic attributes (e.g.,shape
,style
,penwidth
,color
).- node_data
An optional list of named vectors comprising node data attributes. The helper function
node_data()
is strongly recommended for use here as it helps bind data specifically to the created nodes.- edge_data
An optional list of named vectors comprising edge data attributes. The helper function
edge_data()
is strongly recommended for use here as it helps bind data specifically to the created edges.- set_seed
Supplying a value sets a random seed of the
Mersenne-Twister
implementation.
Examples
# Create an undirected PA
# graph with 100 nodes, adding
# 2 edges at every time step
pa_graph <-
create_graph(
directed = FALSE) %>%
add_pa_graph(
n = 100,
m = 1)
# Get a count of nodes
pa_graph %>% count_nodes()
#> [1] 100
# Get a count of edges
pa_graph %>% count_edges()
#> [1] 99