【问题标题】:Recursive search for a node in nested R6 tree - How to break the loop?递归搜索嵌套 R6 树中的节点 - 如何打破循环?
【发布时间】:2021-03-22 09:38:16
【问题描述】:

我正在尝试在 R 中实现类似于以下内容的搜索算法,该算法在嵌套的 R6 类树中搜索节点:

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 类“节点”的公共功能。此类具有私有名称和其他节点的私有列表 - 因此它是嵌套树 R6 类的父节点。

问题是算法访问了正确的节点,但函数无法生成输出,因为嵌套循环没有中断,它继续循环遍历所有节点,直到它访问所有节点。使用return(self) 似乎没有什么不同。

有没有办法通过访问父级的属性等来打破外循环?

非常感谢任何帮助!

【问题讨论】:

    标签: r tree nested-loops nested-lists r6


    【解决方案1】:

    我不太清楚你想要达到什么,但也许这可以解决它:

    
          for (i in 1:length(private$list)){
            n <- private$list[[i]]$search(node)
            if(!is.null(n)) {
              return(n)
            }
          }
    
    

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 2012-01-19
      • 2012-01-26
      • 2019-01-30
      • 2022-01-14
      相关资源
      最近更新 更多