我正在嘗試使用 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
uj5u.com熱心網友回復:
更新
如果您只需要邊緣 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/354172.html
