r tidygraph 在层次结构中找到满足条件的第一个父级
r tidygraph find first parent in hierarchy that meets criteria
找到报告线内的第一个批准人,该批准人至少高出 2 个等级。例如,0 级比 2 级高两个等级。
Employee Graph
我正在尝试创建一个新的节点属性 Approver,它应该为 Employees H、E、F、G 填充,它们都应该将批准者标识为 Employee 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]]
}))
找到报告线内的第一个批准人,该批准人至少高出 2 个等级。例如,0 级比 2 级高两个等级。
Employee Graph
我正在尝试创建一个新的节点属性 Approver,它应该为 Employees H、E、F、G 填充,它们都应该将批准者标识为 Employee 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]]
}))