我有一个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
答案 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)))