我有一个这样的图表:
我需要提取图的一部分,其中只包含从根(n2)到红叶的所有路径。我发现可以通过R中的以下命令提取节点的邻居,这里是n6和n7:
if(myObject.doesExist()){
//safely use myObject
}
然后梳理subg1和subg2。
但问题是: 1.我的条件是直到达到像n2(根)这样的节点,而不是等级。
%%%%%%%%%%%%%%%%%%%%%%%%%
我也试过以下但我遇到了两个问题:
level = 2
subg1 <- graph.neighborhood(cGraph, level, "n6", mode=c('in'))
subg2 <- graph.neighborhood(cGraph, level, "n7", mode=c('in'))
答案 0 :(得分:2)
最后我找到了它:
finalshortest = all_simple_paths(cGraph, from = c("n2"), to = V(cGraph)[color=="red"],mode="out")
V(cGraph)$keep <- "NO"
for (p in finalshortest) { V(cGraph)[p]$keep <- "YES" }
finalsubgraph<-induced.subgraph(cGraph, which(V(cGraph)$keep=="YES"))
再次感谢您帮助Tamas
答案 1 :(得分:0)
我担心你的问题没有得到最全面的规定。首先,你说你需要提取图表的一部分,其中只包含红叶&#34;。显然,该图仅包含节点n6和n7(因为只有那些是红色的)。既然你说&#34; n1,n3和n5的节点应该被删除&#34;,看起来你真的想要一个包含节点n6和n7之间的最短路径的图,< em>忽略边缘方向。如果这真的是你想要的,那么使用get.shortest.path
函数找到n6和n7之间的最短路径,然后使用induced.subgraph
提取仅包含位于最短路径之间的节点的子图n6和n7。