递归搜索嵌套 R6 树中的节点 - 如何打破循环?
Recursive search for a node in nested R6 tree - How to break the loop?
我正在尝试在 R 中实现类似于以下的搜索算法,该算法在嵌套 R6 classes:
的树中搜索节点
search = function(node){
if (private$name == node){
self
} else {
if(all(!is.na(private$list))){
for (i in 1:length(private$list)){
private$list[[i]]$search(node)
}
}
}
}
在这里,搜索是 R6 class“节点”的一个 public 功能。这个 class 有一个私有名称和一个其他节点的私有列表 - 所以它是嵌套树 R6 classes.
的父节点
问题是算法访问了正确的节点,但函数无法生成输出,因为嵌套循环没有中断,它继续循环遍历所有节点,直到访问所有节点。使用 return(self)
似乎没有什么不同。
有没有办法通过访问父级的属性等来打破外循环?
非常感谢任何帮助!
我不太清楚你想达到什么目的,但也许这可以解决它:
for (i in 1:length(private$list)){
n <- private$list[[i]]$search(node)
if(!is.null(n)) {
return(n)
}
}
我正在尝试在 R 中实现类似于以下的搜索算法,该算法在嵌套 R6 classes:
的树中搜索节点search = function(node){
if (private$name == node){
self
} else {
if(all(!is.na(private$list))){
for (i in 1:length(private$list)){
private$list[[i]]$search(node)
}
}
}
}
在这里,搜索是 R6 class“节点”的一个 public 功能。这个 class 有一个私有名称和一个其他节点的私有列表 - 所以它是嵌套树 R6 classes.
的父节点问题是算法访问了正确的节点,但函数无法生成输出,因为嵌套循环没有中断,它继续循环遍历所有节点,直到访问所有节点。使用 return(self)
似乎没有什么不同。
有没有办法通过访问父级的属性等来打破外循环?
非常感谢任何帮助!
我不太清楚你想达到什么目的,但也许这可以解决它:
for (i in 1:length(private$list)){
n <- private$list[[i]]$search(node)
if(!is.null(n)) {
return(n)
}
}