r - 递归搜索嵌套 R6 树中的节点 - 如何打破循环?
问题描述
我正在尝试在 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)
似乎没有什么不同。
有没有办法通过访问父级的属性等来打破外循环?
我非常感谢任何帮助!
解决方案
我不太清楚您希望实现什么,但也许这可以解决它:
for (i in 1:length(private$list)){
n <- private$list[[i]]$search(node)
if(!is.null(n)) {
return(n)
}
}
推荐阅读
- android - 解析请求数据 Cloud Functions TypeScript + Android
- python - 在熊猫中创建具有递归操作的条件数据框列
- html - html页面结束一半并且不滚动
- python - n x n 矩阵通过列表理解更改为 1 维
- php - SQLSTATE[HY000]:一般错误:1364 字段“名称”在 laravel 中没有默认值
- python - Flask AttributeError 中的基本 HTTP 身份验证:“NoneType”错误
- machine-learning - 优化双射变换值是否会影响性能或准确性?
- c - 读取行缓冲流可以产生多行吗?
- python - 尝试制作加密程序 - 未知错误
- python - 计算 numpy 数组的条件中位数