我试图通过边缘特征(如其标签)对igraph图进行子集化.在可重复的例子中,我通过一点修改从另一个帖子中无耻地偷走了,我希望能够将最好的朋友关系(BF)与家庭关系(FAM)分开:
edges <- matrix(c(103, 86, 24, 103, 103, 2, 92, 103, 87, 103, 103, 101, 103, 44), ncol=2, byrow=T)
g <- graph(as.vector(t(edges)))
E(g)[c(2:4,7)]$label<-"FAM"
E(g)[c(1,5,6)]$label<-"BF"
Run Code Online (Sandbox Code Playgroud)
到目前为止我能做的最好的事情是显示有一种领带的边缘:
E(g)[E(g)$label=="BF"]
V(g)[E(g)$label=="BF"]
Run Code Online (Sandbox Code Playgroud)
Sol*_*mon 24
怎么样:
gfam <- subgraph.edges(graph=g, eids=which(E(g)$label=="FAM"), delete.vertices = TRUE)
gbf <- subgraph.edges(graph=g, eids=which(E(g)$label=="BF"), delete.vertices = TRUE)
Run Code Online (Sandbox Code Playgroud)
建议igraph /网络分析教程/无耻插件:http://sna.stanford.edu/rlabs.php
Gab*_*rdi 18
我建议你阅读?V并?E看看如何选择边和顶点.一个非常紧凑和可读的解决方案是你的问题
subgraph.edges(g, E(g)[label=="FAM"])
subgraph.edges(g, E(g)[label=="BF"])
Run Code Online (Sandbox Code Playgroud)
如果顶点没有指定标签的入射边缘,也会删除顶点.详情?subgraph.edges请见.