2017-05-14 9 views
5

dendrogram의 내부 노드 높이를 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 
    } 
} 

그러나 : nodeHeights (dendro를)

이 오류를 throw합니다 :

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

어떤 생각? 또는 순서로 dendrogram의 노드 높이를 얻는 방법에 대한 제안이 있습니까? ?options에서

+0

probkem은 capture.output이 아니라 utils :: str (dendro) – dan

답변

2
> options(expressions=10000) 
> nodeHeights(dendro) 
[1] 1084 

:

expressions sets a limit on the number of nested expressions that will be evaluated

+0

으로 알려져 있습니다. 나는 그 수정을 알고 있지만 안정적인 해결책은 아닙니다. - 이것에 대한 dendrogram이있을 것입니다. 결국 충돌. 비 재귀 O (n)은 내가 찾고있는 것이다. – dan

1

트릭 제의 .bashrc에 ulimit -s <high_value>를 않았다 추가.