dendrapply {stats} | R Documentation |
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.
dendrapply(X, FUN, ...)
X |
an object of class |
FUN |
an R function to be applied to each dendrogram node,
typically working on its |
... |
potential further arguments passed to |
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.
this is still somewhat experimental, and suggestions for enhancements (or nice examples of usage) are very welcome.
Martin Maechler
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.
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)