【问题标题】:Getting a node stack overflow error while trying to print a dendrogram尝试打印树状图时出现节点堆栈溢出错误
【发布时间】:2017-05-14 00:38:40
【问题描述】:

我正在尝试以BFS 顺序获取dendrogram 的内部节点的高度。

utils::str 函数以BFS 顺序打印dendrogram,所以我想我会使用它(将输出重定向到一个文件并对其进行一些解析以获得我需要的信息)。

我的'dendrogram'有2个分支,共有5902名成员download RDS file link: dendro.RDS

当我尝试时:

utils::str(dendro)

我收到此错误:

Error in getOption("OutDec") : node stack overflow
Error during wrapup: node stack overflow

我尝试使用一个简单的递归函数:

nodeHeights <- function(dendro){
  if(is.leaf(dendro))
    0
  else{
    cat(attr(dendro,"height"),"\n")
    max(nodeHeights(dendro[[1]]),nodeHeights(dendro[[2]]))+1
  }
}

但是: 节点高度(dendro)

抛出此错误:

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?

有什么想法吗?或者有什么建议如何在BFS 订单中获取dendrogram 的节点高度?

【问题讨论】:

  • 在我的 R 中,probkem 不是 capture.output 而是 utils::str(dendro)

标签: r dendrogram


【解决方案1】:
> options(expressions=10000)
> nodeHeights(dendro)
[1] 1084

来自?options

表达式对嵌套表达式的数量设置了限制 被评估

【讨论】:

  • 我知道该修复程序,但它不是一个稳定的解决方案 - 会有一个树状图最终也会崩溃。我正在寻找一个非递归的 O(n)。
【解决方案2】:

在我的 .bashrc 中添加 ulimit -s &lt;high_value&gt; 就可以了。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多