首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从R中的图像对象中获取树?

如何从R中的图像对象中获取树?
EN

Stack Overflow用户
提问于 2019-11-08 15:41:35
回答 1查看 231关注 0票数 1

我有一个随机有向加权图gg,它有下一个结构:

代码语言:javascript
复制
gg <-
structure(list(10, TRUE, c(0, 0, 1, 2, 2, 5, 5, 6, 6, 6, 6, 9,
9, 9, 9, 9), c(6, 9, 3, 0, 5, 3, 7, 1, 3, 5, 8, 2, 4, 6, 7, 8
), c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), c(3,
7, 11, 2, 5, 8, 12, 4, 9, 0, 13, 6, 14, 10, 15, 1), c(0, 2, 3,
5, 5, 5, 7, 11, 11, 11, 16), c(0, 1, 2, 3, 6, 7, 9, 11, 13, 15,
16), list(c(1, 0, 1), structure(list(), .Names = character(0)),
    structure(list(name = c("C", "D", "I", "J", "K", "N", "O",
    "Q", "S", "T"), color = c("yellow", "red", "red", "red",
    "red", "red", "green", "red", "red", "green")), .Names = c("name",
    "color")), structure(list(weight = c(0.5, 0.5, 1, 0.333333333333333,
    0.333333333333333, 0.333333333333333, 0.333333333333333,
    0.25, 0.25, 0.25, 0.25, 0.2, 0.2, 0.2, 0.2, 0.2)), .Names = "weight")),
    <environment>), class = "igraph")

我需要找到从根(黄色节点)到叶子(红色节点)的所有路径。叶子由(a)边的方向和(b)从根到叶的距离应该是两个边。

在我的例子中,根是C,叶子应该是D, J, N, S, I, K, Q。我试着只定义(a)条件。

代码语言:javascript
复制
root <- "C"
leaves = which(degree(gg, v = V(gg), mode = "out")==0, useNames = T)
leaves 
# J K Q S 
# 4 5 8 9 
plot(gg, layout = layout.reingold.tilford(gg, root=root),
        edge.arrow.size=0.2, edge.curved=T,
        edge.label = round(E(gg)$weight,2))

问题.如何定义(b)条件并添加到叶集D, N, I, K节点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-13 15:47:23

有一种方法可以做到这一点:使用shortest_paths获取所有来自根节点的两条边的顶点。

代码语言:javascript
复制
two.edges.from.root = unlist(sapply(shortest_paths(gg,
                                                   from = as.numeric(V(gg)["C"]),
                                                   mode = "out")$vpath,
                                    function(x) { if(length(x) == 3) { x[3] } }))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58769689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档