當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R dendrapply 將函數應用於樹狀圖的所有節點


R語言 dendrapply 位於 stats 包(package)。

說明

將函數 FUN 遞歸地應用於 dendrogram 的每個節點。當 y <- dendrapply(x, fn) 時,y 是與 x 具有相同圖結構的樹狀圖,並且對於每個節點,y.node[j] <- FUN( x.node[j], ...) (其中 y.node[j] 是 y 的 j-th 節點的(無效!)符號) 。

用法

dendrapply(X, FUN, ...)

參數

X

"dendrogram" 的對象。

FUN

一個R應用於每個樹狀圖節點的函數,通常作用於其attributes單獨返回同一節點的更改版本。

...

傳遞給 FUN 的潛在進一步參數。

通常是與 X 具有相同(圖)結構的樹狀圖。為此,該函數在概念上必須采用 FUN <- function(X) { attributes(X) <- .....; X } 形式,即返回添加或更改了某些屬性的節點。

注意

該實現在某種程度上是實驗性的,非常歡迎增強函數的建議(或很好的使用示例)。當前的實現是遞歸的,對於具有許多非葉的樹狀圖來說效率低下。請參閱 dendrogram 中的“警告”。

例子

require(graphics)

## a smallish simple dendrogram
dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
(dhc21 <- dhc[[2]][[1]])

## too simple:
dendrapply(dhc21, function(n) utils::str(attributes(n)))

## toy example to set colored leaf labels :
local({
  colLab <<- function(n) {
      if(is.leaf(n)) {
        a <- attributes(n)
        i <<- i+1
        attr(n, "nodePar") <-
            c(a$nodePar, list(lab.col = mycols[i], lab.font = i%%3))
      }
      n
  }
  mycols <- grDevices::rainbow(attr(dhc21,"members"))
  i <- 0
 })
dL <- dendrapply(dhc21, colLab)
op <- par(mfrow = 2:1)
 plot(dhc21)
 plot(dL) ## --> colored labels!
par(op)

作者

Martin Maechler

也可以看看

as.dendrogramlapply 用於將函數應用於 list 的每個組件, rapply 用於對嵌套列表的每個非列表組件執行此操作。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Apply a Function to All Nodes of a Dendrogram。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。