R tidygraph 查找层次结构中符合条件的第一个父级



查找报告行中至少高出 2 个等级的第一个审批者。例如,0级比2级高两个等级。

员工图表

我正在尝试创建一个新的节点属性审批者,该属性应填充员工 H、E、F、G,这些属性都应将审批者标识为员工 A。

我一整天都在试图弄清楚这一点,但并不真正了解如何进行一跳遍历,更不用说几个了。我的理解是,呼吸先搜索BFS将从叶节点开始,然后在树上工作。我真的陷入了如何访问树的不同部分的困境。

任何帮助非常感谢。

library(tidygraph)
library(visNetwork)
# sample graph
g <- tidygraph::create_tree(8,2) %>% 
activate(nodes) %>% 
mutate(Employee = LETTERS[1:8],
Grade = c(0,1,1,1,2,2,2,2),
label = paste("Emp",Employee,"Grade",Grade)
)
visIgraph(g,layout="layout_as_tree", flip.y=F,idToLabel = F)
g %>% activate(nodes) %>% 
mutate(Approver = map_bfs_back(node_is_root(),.f = function(node,path,...){
#If starting node grade - node grade >= 2 then Approver Employee ID
}))

花了一段时间才弄清楚这一点。不确定是否有其他人对此类查询感兴趣?希望对某人有帮助。

g %>% activate(nodes) %>% 
mutate(P = map_bfs_chr(node_is_root(),.f = function(node,path, ...){
.N()$Employee[tail(path$node[ .N()$Grade[node] - .N()$Grade[path$node] >= 2],1)[1]]
}))

最新更新