удалить несвязанные узлы R igraph или ggnet - PullRequest
0 голосов
/ 04 июня 2018

У меня есть симметричная матрица, которая представляет степень связей между актерами.Я хотел бы отменить несвязанную вершину.

Функции, включенные в igraph (как delete_edges или delete_vertices), не работают для моего случая.Я делюсь своим кодом

#import of matrix
matrix3<-import("matrix2a.xlsx")
r.name <- matrix2a [,1]
rownames(matrix2a) <- r.name
matrix2a <- matrix2a %>% select(-X__1)
View(matrix2a)
m=as.matrix(matrix2a)
#I compute the maximum spanning tree graph
g <- graph_from_adjacency_matrix(m, mode = "upper", weighted = T, diag = F)
max_spann_tree <- mst(g, weights = -E(g)$weight)
#I obtain a network with some unconneted vertex that I would like to erase

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 04 июня 2018

Я не уверен, что вы имеете в виду "Функции, включенные в igraph (например, delete_edges или delete_vertices), не работают для моего случая".delete.vertices сделано именно для этой цели.

Поскольку вы не предоставляете данные, я покажу небольшой пример из случайных данных.Я добавляю метки на график, чтобы при удалении изолированных вершин нумерация не менялась.Я также использую явную разметку, чтобы таким же образом выложить уменьшенный график для сравнения.

library(igraph)
set.seed(1234)
G = erdos.renyi.game(40, 0.055)
V(G)$label=1:40     
LO = layout_with_fr(G)
plot(G, layout = LO)

Graph 01

Теперь определите изолированные вершины и используйте delete.vertices для их удаления.

Isolated = which(degree(G)==0)
G2 = delete.vertices(G, Isolated)
LO2 = LO[-Isolated,]
plot(G2, layout=LO2)

Graph 02

Тот же граф, но без изолированных вершин.

Если это не то, что вам нужно, пожалуйста, уточните, почему он не работает для вашего графа.

...