R:返回所有简单路径的边列表

标签 r graph igraph tidygraph sfnetwork

我正在尝试使用 tidygraph 获取两个节点之间的路径的边缘列表。这是一个例子

demo <- tbl_graph(nodes = tibble(name = c("A", "B", "C", "D")),
                       edges = tribble(~from, ~to,~id,
                                       "B", "A", "1",
                                       "D", "C", "2",
                                       "A", "D", "3",
                                       "A", "C", "4"),
                   node_key = "name")

我使用 igraph 包中的 all_simple_paths 来获取节点 B 和节点 C 之间的所有可能路径。

paths <- all_simple_paths(demo, "B", "C")
#[[1]]
#+ 3/4 vertices, named, from e0c8c2e:
#[1] B A C

#[[2]]
#+ 4/4 vertices, named, from e0c8c2e:
#[1] B A D C

我想知道如何为所有简单路径生成边列表。谢谢。

[1] 1 4
[2] 1 3 2

最佳答案

更新

如果你只需要边缘ID,你可以使用

> lapply(
+   all_simple_paths(demo, "B", "C"),
+   function(x) {
+     get.edge.ids(demo, c(rbind(head(x, -1), x[-1])))
+   }
+ )
[[1]]
[1] 1 4

[[2]]
[1] 1 3 2

尝试下面的代码

lapply(
  all_simple_paths(demo, "B", "C"),
  function(x) {
    E(demo)[get.edge.ids(demo, c(rbind(head(x, -1), x[-1])))]
  }
)

这给出了

[[1]]
+ 2/4 edges from d776b98 (vertex names):
[1] B->A A->C

[[2]]
+ 3/4 edges from d776b98 (vertex names):
[1] B->A A->D D->C

关于R:返回所有简单路径的边列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69889608/

相关文章:

缓解 R for Windows 中的反斜杠刺激

R图度数分布不起作用

python - 是否有用于 python 的交互式图形库

javascript - D3、JSON、图表、强制布局、数据更新、不完全重绘、拖动

c++ - igraph_neighborhood "Valgrind output: blocks are indirectly lost in loss record "

r - R 中的模拟空间数据表示

r - 从命令行安装 R 包

r - 通过分类变量和连续变量的交互可视化 GLMM 预测

r - 使用 fft 的带通滤波器 R

graph - 查找所有 BFS/DFS 遍历