# dendrapply {stats}

### Description

Apply function `FUN`

to each node of a `dendrogram`

recursively. When `y <- dendrapply(x, fn)`

, then `y`

is a dendrogram of the same graph structure as `x`

and for each node, `y.node[j] <- FUN( x.node[j], ...)`

(where `y.node[j]`

is an (invalid!) notation for the j-th node of y.

### Usage

dendrapply(X, FUN, ...)

### Arguments

- X
- an object of class
`"dendrogram"`

. - FUN
- an R function to be applied to each dendrogram node, typically working on its
`attributes`

alone, returning an altered version of the same node. - ...
- potential further arguments passed to
`FUN`

.

### Values

Usually a dendrogram of the same (graph) structure as `X`

. For that, the function must be conceptually of the form `FUN <- function(X) { attributes(X) <- .....; X }`

, i.e. returning the node with some attributes added or changed.

### Note

this is still somewhat experimental, and suggestions for enhancements (or nice examples of usage) are very welcome.

### See Also

`as.dendrogram`

, `lapply`

for applying a function to each component of a `list`

, `rapply`

for doing so to each non-list component of a nested list.

### Examples

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)

Documentation reproduced from R 3.0.2. License: GPL-2.