r - 选择包含特定叶子的子图(igraph)

标签 r igraph

我有一个这样的图表:

An example graph

我需要提取图的一部分,其中只包含从根 (n2) 到红叶的所有路径。我发现可以通过 R 中的以下命令提取节点的邻居,这里是 n6 和 n7:

level = 2
subg1 <- graph.neighborhood(cGraph, level, "n6", mode=c('in'))
subg2 <- graph.neighborhood(cGraph, level, "n7", mode=c('in'))

然后组合subg1和subg2。

但问题是: 1、我的条件是直到到达n2(root)这样的节点,而不是level。

%%%%%%%%%%%%%%%%%%%%%%%%%

我也尝试了以下方法,但我遇到了 2 个问题:

finalshortest = get.all.shortest.paths(finalSubg1, c("n2"), to = V(finalSubg1)[color=="red"],mode="out")
for (p in finalshortest$res) {
    finalsubgraph <- graph.union(induced.subgraph(finalSubg1,V(finalSubg1)[p]), finalsubgraph)
    finalsubgraph <- graph.union(subgraph.edges(finalSubg1,E(finalSubg1,path=p)), finalsubgraph)
}
plot(finalsubgraph)
  1. get.all.shortest.paths 没有给出我的所有路径,它给出了最短路径。例如,该图有 2 条从 n2 到 n6 的路径。
  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

关于r - 选择包含特定叶子的子图(igraph),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33109104/

相关文章:

r - 如何将日期格式(d.m.Y)更改为年份(Y)并查找年度累计总和?

R ggplot2散点图: adding color for the level of deviation from (regression) geom_smooth line

python-2.7 - 保留原始权重的加权双峰二分图投影

r - 对 igraph 顶点进行排序

r - 从单个 XML 创建多个 XML2 过滤

r - 计算 R 中 tidygraph 对象列表中相同列的频率?

R子集唯一观察保留最后一个条目

algorithm - igraph 优先附件有向图是无环的吗?

r - 匹配 2 个图中的边

r - 使用 R 简单转换为边缘列表?