删除节点并计算图论指标R

时间:2018-11-26 07:55:53

标签: r igraph graph-theory

我有一个132 x 132的矩阵。我想在每个步骤中删除每一行和每一列,然后计算中心度,可传递性,模块性,程度。我可以删除每个节点并计算这些度量,如下所示。但是我想知道,如何删除每个节点并循环计算这些度量,所以我不必手动输入每个节点并计算这些图论度量?

delete_vertices <- delete.vertices(network, c("node1") # delete one node at a time

centrality <- centr_betw(delete_vertices, directed = FALSE, nobigint = TRUE, normalized = TRUE)

谢谢

Priya

1 个答案:

答案 0 :(得分:1)

像这样吗?

library(igraph)

set.seed(1234)    # Make g reproducible

g <- sample_gnp(10, 3/10) %>%
  set_vertex_attr("name", value = LETTERS[1:10])

deg <- degree(g)
centrality <- vector("list", length(V(g)))
trans <- vector("list", length(V(g)))

for(i in seq_along(V(g))){
  delete_vertices <- delete.vertices(g, V(g)[i]) # delete one node at a time
  centrality[[i]] <- centr_betw(delete_vertices, directed = FALSE, nobigint = TRUE, normalized = TRUE)
  trans[[i]] <- transitivity(g, type = "local", vids = V(g)[i])
}

centr_graph <- sapply(centrality, '[[', "centralization")
centr_graph <- setNames(centr_graph, names(V(g)))
trans <- setNames(unlist(trans), names(V(g)))