删除未连接的节点 R igraph 或 ggnet

标签 r igraph ggnetwork

我有一个对称矩阵,表示参与者之间的联系程度。 我想取消未连接的顶点。

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

在此先感谢您的帮助!

最佳答案

我不确定您的意思是“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

相同的图,但没有孤立的顶点。

如果这不是您想要的,请更明确地说明为什么它不适用于您的图表。

关于删除未连接的节点 R igraph 或 ggnet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50679877/

相关文章:

python - 两个节点之间的路径

r - Union n igraphs后如何恢复属性?

r - 如何使用随机游走算法计算介数?

r - 将抖动点添加到 ggnetwork 图中

R:如何从数据集的组合中执行更复杂的计算?

R - 获取 RasterLayer 的特定波段

根据另一个数据框中的列删除行

r - flextable:嵌入 ggpplots 使用来自 2 列的数据和列表(用于比较)作为每行的单个图