我有一个对称矩阵,表示演员之间的联系程度。 我想取消未连接的顶点。
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
提前感谢您的帮助!
答案 0 :(得分:1)
我不确定你的意思“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)
现在识别孤立的顶点并使用delete.vertices
删除它们。
Isolated = which(degree(G)==0)
G2 = delete.vertices(G, Isolated)
LO2 = LO[-Isolated,]
plot(G2, layout=LO2)
相同的图形,但没有孤立的顶点。
如果这不是您想要的,请更明确地说明为什么它不适用于您的图表。