Skip to contents

From a graph object of class dgr_graph or a node data frame, set node attribute properties for all nodes in the graph using one of several whole-graph functions.

Usage

set_node_attr_w_fcn(graph, node_attr_fcn, ..., column_name = NULL)

Arguments

graph

A graph object of class dgr_graph.

node_attr_fcn

The name of the function to use for creating a column of node attribute values. Valid functions are: get_alpha_centrality(), get_authority_centrality(), get_betweenness(), get_closeness(), get_cmty_edge_btwns(), get_cmty_fast_greedy(), get_cmty_l_eigenvec(), get_cmty_louvain(), get_cmty_walktrap(), get_degree_distribution(), get_degree_histogram(), get_degree_in(), get_degree_out(), get_degree_total(), get_eccentricity(), get_eigen_centrality(), get_pagerank(), get_s_connected_cmpts(), and get_w_connected_cmpts().

...

Arguments and values to pass to the named function in node_attr_fcn, if necessary.

column_name

An option to supply a column name for the new node attribute column. If NULL then the column name supplied by the function will used along with a __A suffix.

Value

A graph object of class dgr_graph.

Examples

# Create a random graph using the
# `add_gnm_graph()` function
graph <-
  create_graph() %>%
  add_gnm_graph(
    n = 10,
    m = 22,
    set_seed = 23) %>%
  set_node_attrs(
    node_attr = value,
    values = rnorm(
      n = count_nodes(.),
      mean = 5,
      sd = 1) %>% round(1))

# Get the betweenness values for
# each of the graph's nodes as a
# node attribute
graph_1 <-
  graph %>%
  set_node_attr_w_fcn(
    node_attr_fcn = "get_betweenness")

# Inspect the graph's internal
# node data frame
graph_1 %>% get_node_df()
#>    id type label value betweenness__A
#> 1   1 <NA>     1   4.4       9.333333
#> 2   2 <NA>     2   4.6      29.000000
#> 3   3 <NA>     3   5.9      19.166667
#> 4   4 <NA>     4   6.5       2.666667
#> 5   5 <NA>     5   4.1       0.500000
#> 6   6 <NA>     6   3.6      18.000000
#> 7   7 <NA>     7   5.4      12.000000
#> 8   8 <NA>     8   5.8       0.000000
#> 9   9 <NA>     9   4.7      10.333333
#> 10 10 <NA>    10   5.7       0.000000

# If a specified function takes argument
# values, these can be supplied as well
graph_2 <-
  graph %>%
  set_node_attr_w_fcn(
    node_attr_fcn = "get_alpha_centrality",
    alpha = 2,
    exo = 2)

# Inspect the graph's internal
# node data frame
graph_2 %>% get_node_df()
#>    id type label value alpha_centrality__A
#> 1   1 <NA>     1   4.4           0.0621118
#> 2   2 <NA>     2   4.6          -0.5341615
#> 3   3 <NA>     3   5.9          -0.8157350
#> 4   4 <NA>     4   6.5          -0.6997930
#> 5   5 <NA>     5   4.1           1.0641822
#> 6   6 <NA>     6   3.6          -0.8737060
#> 7   7 <NA>     7   5.4          -0.6832298
#> 8   8 <NA>     8   5.8           0.9316770
#> 9   9 <NA>     9   4.7          -0.4679089
#> 10 10 <NA>    10   5.7           0.3685300

# The new column name can be provided
graph_3 <-
  graph %>%
  set_node_attr_w_fcn(
    node_attr_fcn = "get_pagerank",
    column_name = "pagerank")

# Inspect the graph's internal
# node data frame
graph_3 %>% get_node_df()
#>    id type label value pagerank
#> 1   1 <NA>     1   4.4   0.1416
#> 2   2 <NA>     2   4.6   0.1401
#> 3   3 <NA>     3   5.9   0.1262
#> 4   4 <NA>     4   6.5   0.0637
#> 5   5 <NA>     5   4.1   0.0478
#> 6   6 <NA>     6   3.6   0.1976
#> 7   7 <NA>     7   5.4   0.1318
#> 8   8 <NA>     8   5.8   0.0422
#> 9   9 <NA>     9   4.7   0.0693
#> 10 10 <NA>    10   5.7   0.0398

# If `graph_3` is modified by
# adding a new node then the column
# `pagerank` will have stale data; we
# can run the function again and re-use
# the existing column name to provide
# updated values
graph_3 <-
  graph_3 %>%
  add_node(
    from = 1,
    to = 3) %>%
  set_node_attr_w_fcn(
    node_attr_fcn = "get_pagerank",
    column_name = "pagerank")

# Inspect the graph's internal
# node data frame
graph_3 %>% get_node_df()
#>    id type label value pagerank
#> 1   1 <NA>     1   4.4   0.1349
#> 2   2 <NA>     2   4.6   0.1352
#> 3   3 <NA>     3   5.9   0.1585
#> 4   4 <NA>     4   6.5   0.0670
#> 5   5 <NA>     5   4.1   0.0461
#> 6   6 <NA>     6   3.6   0.1300
#> 7   7 <NA>     7   5.4   0.1014
#> 8   8 <NA>     8   5.8   0.0400
#> 9   9 <NA>     9   4.7   0.0685
#> 10 10 <NA>    10   5.7   0.0440
#> 11 11 <NA>  <NA>    NA   0.0744