2017-10-07 5 views

答えて

0

data.treeライブラリを使用して見つかった解決策。解決策を見つける時間がかかりました。最初の行1,2を解析すると、ブランチが作成されます。 2番目の行が解析され、ブランチを作成しているとき、前のブランチをオーバーライドしてブランチ1,4のみを保持していました。既存のノードを参照する新しいelseを作成しない場合、ノードがすでに指定された名前の子を持っているかどうかをチェックすることによって、この問題を克服します。以下はコードです。 `

rootNode <- Node$new("Root") 

for(i in 1:nrow(data)){ 
    tmp<-rootNode 
    for(j in 1:ncol(data)){ 

    if(is.null(Navigate(tmp, c(as.character(data[i,j]))))){ 
     node <- tmp$AddChild(data[i,j]) 
     tmp <- node 
    } 
    else{ 
     tmp <- Navigate(tmp, c(as.character(data[i,j]))) 
    } 
    } 

} 

plot(rootNode) 

`

に他のテストケースでテストされ、それが正常に動作しています。

data <- data.frame(a=c(1,1,2,2),b=c(1,2,4,3),c=c(2,2,2,2),d=c(2,3,3,4))

0

これを行うための標準的な方法は次のとおりです。

data <- data.frame(a=c(1,1,2,2),b=c(1,2,4,3),c=c(2,2,2,2),d=c(2,3,3,4)) 
data$pathString <- paste("0", data$a, data$b, data$c, data$d, sep = "/") 
tree <- as.Node(data) 

は、例えば、あなたがドキュメントを読むことを確認してくださいhttps://cran.r-project.org/package=data.tree/vignettes/data.tree.html#create-a-tree-from-a-data.frame

+0

ありがとうございました。目的を助けました。 –

関連する問題