2012-01-10 11 views
1

私は自分自身にRを教えています。 Binary Treeパッケージを特定する必要があります。私はそのページの例を得た後、私は終わりのノードから親に木を歩いてみようと思った。この特定のパッケージは、私が欲しいことをするgetParent()関数/メソッド(私が識別できる)を持っていないようです。Rで木を歩くには?

私は、ツリーを他のオブジェクトに変換する必要があると思った:グラフ、テキスト文字列の配列、何でも、私が探しているものを見つけるのに十分なgoogle-fuを持っていないようだ。私はまだドキュメントの周りに自分の道を見つけることを試みています。

したがって、彼が何をしているのかを知っている人が、ウェブページに示されている例のツリーをどのように歩いていますか?

+1

はより慎重にお読みください;-)まで歩くよりも木:「BinaryTreeクラス{パーティ}」。バイナリツリーパッケージではありません。 –

答えて

3

ここでは、ツリーを走査して各ノードに親を追加する関数について説明します。

addParent <- function(n, parent = NULL) { 
    n$parent <- parent 
    if (!n$terminal) { 
     n$left <- Recall(n$left, n) 
     n$right <- Recall(n$right, n) 
    } 
    n 
} 

# Example usage 
airq <- subset(airquality, !is.na(Ozone)) 
airct <- ctree(Ozone ~ ., data = airq, 
       controls = ctree_control(maxsurrogate = 3)) 
[email protected] <- addParent([email protected]) 
leaves <- nodes(airct, unique(where(airct))) 
leaves[[1]]  # node 5 
leaves[[1]]$parent # node 4 

# And here's a way to "walk up the tree" 
walkUp <- function(n) { 
    cat("Node", n$nodeID, "\n") 
    n <- n$parent 
    if(!is.null(n)) Recall(n) 
} 

for(n in leaves) { cat("---\n"); walkUp(n) } 

はところで、私は思うむしろ登るアップそれは

+0

ここで私が噛んでいるのはたくさんあります!ありがとう! – user63741

関連する問題