【发布时间】:2017-11-11 14:58:23
【问题描述】:
我想在 R 中创建一个函数“f”,该函数在条目中包含个人和个人之间的边的 data.frame(例如称为 A2),并返回另一个只有“祖先”和“ children”的 A2 也是祖先的祖先和孩子的孩子!
为了说明我的复杂问题:
library(visNetwork)
nodes <- data.frame(id = c(paste0("A",1:5),paste0("B",1:3)),
label = c(paste0("A",1:5),paste0("B",1:3)))
edges <- data.frame(from = c("A1","A1","A2","A3","A4","B1","B2"),
to = c("A2","A3","A4","A4","A5","B3","B3"))
visNetwork(nodes, edges) %>%
visNodes(font = list(size=45)) %>%
visHierarchicalLayout(direction = "LR", levelSeparation = 500)
在此示例中,data.frame 包含 2 个不同的独立网络:1 个具有“A”的网络,另一个具有“B”的网络。
我想实现一个函数 f(data=edges, indiv="A2"),它返回一个 data.frame,其中包含与“A”网络有关的所有 data.frame 边缘行:
f(edges,"A2") 将返回这个 data.frame 边缘的提取
head(f(edges,"A2"))
# from to
#1 A1 A2
#2 A1 A3
#3 A2 A4
#4 A3 A4
#5 A4 A5
我希望它足够清楚,可以帮助我。
非常感谢!
【问题讨论】:
-
你试过什么?您尝试实现的算法是什么?
-
不确定你想要什么,但实际上目标是为每个人返回它的祖先和孩子以及他们孩子的孩子和祖先的祖先。在花时间(当然是几个小时)编写代码之前,我想知道是否有一个众所周知的函数/包可以做到这一点,因为在我看来,对于习惯于(不像我)的人来说,这可能是一个非常基本的问题与网络合作。但是我还没有在互联网上找到令人满意的东西(仅适用于树木)所以我想问更多的专业人士!谢谢
-
我不是图形分析师,但也许这会有所帮助:igraph.org/r/doc/components.html
标签: r networking children ancestor