2017-05-03 17 views

답변

0

노드가 함수에서 반환되지 않았기 때문에 무한 재귀 상황이 발생했습니다. 그냥 콘솔에 각 노드의 속성의 구조를 인쇄 할 찾고 있다면, 그래서 같은 기능에 n를 반환 :

print_attrs <- function(n){ 
    utils::str(attributes(n)) 
    return(n) 
} 
dendrapply(dendro, print_attrs) 

이 콘솔 홍수 끝낼 수 있습니다처럼 보인다하여 dendrogram은의 크기를 감안할 때 . 하나의 접근법은 수퍼 할당 연산자 <<-을 사용하여 함수 내에서 함수의 부모 프레임에있는 변수를 수정하는 것입니다.

list_attrs <- function(x){ 
    out <- vector(mode = "list", length = attr(x, "members")) 
    counter <- 1 
    get_node_attrs <- function(n){ 
    out[[counter]] <<- attributes(n) 
    counter <<- counter + 1 
    return(n) 
    } 
    tmp <- dendrapply(x, get_node_attrs) 
    return(out) 
} 
myattributes <- list_attrs(dendro) 
각 노드의 속성에 대한 평면 (중첩되지 않은) 목록을 만드는 방법은 다소 복잡합니다.

<<-을 사용하여 글로벌 환경의 변수를 수정하지 않을 때는주의해야합니다. 자세한 내용은 this 게시물을 참조하십시오.