set_node_attr_w_fcn {DiagrammeR} | R Documentation

## Set node attribute values with a graph function

### Description

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_bridging`, `get_closeness`, `get_cmty_edge_btwns`, `get_cmty_fast_greedy`, `get_cmty_l_eigenvec`, `get_cmty_louvain`, `get_cmty_walktrap`, `get_constraint`, `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

either a graph object of class `dgr_graph`.

### Examples

    # Create a random graph
    graph <-
      create_random_graph(
        n = 10, m = 22,
        set_seed = 23)

    # 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   6.0       5.904762
    #> 2   2 <NA>     2   2.5       4.904762
    #> 3   3 <NA>     3   3.5       1.785714
    #> 4   4 <NA>     4   7.5       0.000000
    #> 5   5 <NA>     5   8.5       5.738095
    #> 6   6 <NA>     6   4.5      20.523810
    #> 7   7 <NA>     7  10.0       3.333333
    #> 8   8 <NA>     8  10.0       0.000000
    #> 9   9 <NA>     9   8.5       3.738095
    #> 10 10 <NA>    10  10.0       4.071429

    # 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   6.0                   2
    #> 2   2 <NA>     2   2.5                   2
    #> 3   3 <NA>     3   3.5                   6
    #> 4   4 <NA>     4   7.5                   2
    #> 5   5 <NA>     5   8.5                  14
    #> 6   6 <NA>     6   4.5                  50
    #> 7   7 <NA>     7  10.0                  22
    #> 8   8 <NA>     8  10.0                 106
    #> 9   9 <NA>     9   8.5                 162
    #> 10 10 <NA>    10  10.0                 462

    # 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   6.0 0.04608804
    #> 2   2 <NA>     2   2.5 0.04608804
    #> 3   3 <NA>     3   3.5 0.05392301
    #> 4   4 <NA>     4   7.5 0.04608804
    #> 5   5 <NA>     5   8.5 0.07677500
    #> 6   6 <NA>     6   4.5 0.11684759
    #> 7   7 <NA>     7  10.0 0.07899491
    #> 8   8 <NA>     8  10.0 0.08898857
    #> 9   9 <NA>     9   8.5 0.16945368
    #> 10 10 <NA>    10  10.0 0.27675311

    # 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,
        label = 11,
        value = 5.5) %>%
      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   6.0 0.03943470
    #> 2   2 <NA>     2   2.5 0.03943470
    #> 3   3 <NA>     3   3.5 0.08535641
    #> 4   4 <NA>     4   7.5 0.03943470
    #> 5   5 <NA>     5   8.5 0.06401567
    #> 6   6 <NA>     6   4.5 0.10870274
    #> 7   7 <NA>     7  10.0 0.07702682
    #> 8   8 <NA>     8  10.0 0.07693771
    #> 9   9 <NA>     9   8.5 0.16659482
    #> 10 10 <NA>    10  10.0 0.25692313
    #> 11 11 <NA>    11   5.5 0.04613860

[Package DiagrammeR version 0.9.2 Index]