select_nodes_by_degree {DiagrammeR} | R Documentation

## Select nodes in the graph based on their degree values

### Description

Using a graph object of class `dgr_graph`, create a selection of nodes that have certain degree values.

### Usage

    select_nodes_by_degree(graph, expressions, set_op = "union")

### Arguments

`graph` | a graph object of class `dgr_graph`.
`expressions` | one or more expressions for filtering of nodes by degree values. Use a combination of a degree type (`deg` for total degree, `indeg` for in-degree, and `outdeg` for out-degree) with a comparison operator and values for comparison (e.g., use `"deg >= 2"` to select nodes with a degree greater than or equal to 2).
`set_op` | the set operation to perform upon consecutive selections of graph nodes. This can either be as a `union` (the default), as an intersection of selections with `intersect`, or, as a `difference` on the previous selection, if it exists.

### Value

a graph object of class `dgr_graph`.

### Examples

    # Create a random graph with a high amount
    # of connectedness
    graph <-
      create_random_graph(
        n = 35, m = 125,
        set_seed = 23)

    # Report which nodes have a total degree (in-degree
    # + out-degree) of exactly 9
    graph %>%
      select_nodes_by_degree(
        expressions = "deg == 9") %>%
      get_selection()
    #> [1]  2  9 10 14 17 19 31 33

    # Report which nodes have a total degree greater
    # than or equal to 9
    graph %>%
      select_nodes_by_degree(
        expressions = "deg >= 9") %>%
      get_selection()
    #> [1]  2  6  9 10 14 17 19 22 25 29 31 33

    # Combine two calls of `select_nodes_by_degree()`
    # to get those nodes with total degree less than
    # 3 and total degree greater than 10 (by default,
    # those `select...()` functions `union` the sets
    # of nodes selected)
    graph %>%
      select_nodes_by_degree(
        expressions = "deg < 3") %>%
      select_nodes_by_degree(
        expressions = "deg > 10") %>%
      get_selection()
    #> [1]  6 16 22

    # Combine two calls of `select_nodes_by_degree()`
    # to get those nodes with total degree greater than
    # or equal to 3 and less than or equal to 10 (the
    # key here is to `intersect` the sets of nodes
    # selected in the second call)
    graph %>%
      select_nodes_by_degree(
        expressions = "deg >= 3") %>%
      select_nodes_by_degree(
        expressions = "deg <= 10",
        set_op = "intersect") %>%
      get_selection()
    #>  [1]  1  2  3  4  5  7  8  9 10 11 12 13 14
    #> [14] 15 17 18 19 20 21 23 24 25 26 27 28 29
    #> [28] 30 31 32 33 34 35

    # Select all nodes with an in-degree greater than 5,
    # then, apply a node attribute to those selected nodes
    # (coloring the selected nodes red)
    graph_2 <-
      graph %>%
      select_nodes_by_degree(
        expressions = "indeg > 5") %>%
      set_node_attrs_ws(
        node_attr = "color",
        value = "red")

    # Get the selection of nodes
    graph_2 %>%
      get_selection()
    #> [1] 14 22 23 25 27 29 31 33 34

[Package DiagrammeR version 0.9.2 Index]