R/augment_nodelist.R

Defines functions augment_nodelist

Documented in augment_nodelist

augment_nodelist <- function(nodelist, edgelist = NULL, graph = NULL){

  if (!inherits(nodelist, "netlit_nodelist")) {
    abort("'nodelist' must be the output of a call to make_nodelist().")
  }

  node <- attr(nodelist, "node")
  if (is_empty(node)) node <- names(nodelist)[1]

  if (is_empty(graph)) {
    if (!is_empty(edgelist)) {
      if (!inherits(edgelist, "netlit_edgelist")) {
        abort("'edgelist' must be the output of a call to make_edgelist().")
      }
      graph <- igraph::graph_from_data_frame(edgelist, directed = TRUE)
    }
  }

  if (!is_empty(graph)) {
    if (!inherits(graph, "igraph")) {
      abort("'graph' must be an igraph object.")
    }
    
    degree_in <- igraph::degree(graph, mode = "in")
    
    nodelist$degree_in <- degree_in[match(nodelist[[node]], names(degree_in))]
    
    degree_out <- igraph::degree(graph, mode = "out")
    
    nodelist$degree_out <- degree_out[match(nodelist[[node]], names(degree_out))]
    
    degree_total <- igraph::degree(graph, mode = "total")
    
    nodelist$degree_total <- degree_total[match(nodelist[[node]], names(degree_total))]
    
    
    
  }

  betweenness_value <- igraph::betweenness(graph)
  nodelist$betweenness <- betweenness_value[match(nodelist[[node]], names(betweenness_value))]

  return(nodelist)
}
judgelord/netlit documentation built on Jan. 3, 2023, 2:42 p.m.