3

Rに樹状図があり、各葉に値があります。子の値を合計して、各ノードの値を定義するのが好きです。私はdendrapplyに精通していますが、関数内のノードの子にアクセスする方法と、関数を再帰的に記述する方法がわかりません。

開始するコードは次のとおりです。

library("stats")
library("fastcluster")
library("cluster")
D = rbind( + c(1,1,1,1,1), 
 + c(1,2,1,1,1),
 + c(2,2,2,2,2), 
 + c(3,4,5,6,9)

)
dnd = as.dendrogram(hclust.vector(D))

apply_text <<- function(n) {
   if (!is.leaf(n)) {

      attr(n, "edgetext") <- add the value of the branches
   }
   if (is.leaf(n)) {
      attr(n, "edgetext") <- 1
   }
   n
}

tmp <- dendrapply(dnd, apply_text)
plot(tmp)
4

1 に答える 1

0

これは答えかもしれませんが、dendrapply を再実装しています。

apply_text <<- function(n){
  if (!is.leaf(n)) {
    cutversion = cut(n, h = attributes(n)$height)
    leftLabel = attr(apply_text(cutversion$lower[[1]]), "edgetext")  
    rightLabel= attr(apply_text(cutversion$lower[[2]]), "edgetext")
    attr(n, "edgetext") = as.numeric(as.character(leftLabel)) + as.numeric(as.character(rightLabel)) 
     }
  if(is.leaf(n)) {
    attr(n,"edgetext") <- 1
  }
    n
}

tmp <- dendrapply(dnd, apply_text)

ラベルのポリゴンを削除する方法を知っている人はいますか? 他の誰かもそれらを削除するように求めているようです。それについて何か進展はありますか?

于 2012-11-21T00:02:18.897 に答える