edit_node | R Documentation |
Modify nodes in a dendrogram
edit_node(dend, fun = function(d, index) d)
dend |
A dendrogram. |
fun |
A self-defined function. |
if fun
only has one argument, it is basically the same as dendrapply
,
but it can have a second argument which is the index of the node in the dendrogram,
which makes it possible to get information of child nodes and parent nodes for
a specific node.
As an example, we first assign random values to every node in the dendrogram:
mat = matrix(rnorm(100), 10) dend = as.dendrogram(hclust(dist(mat))) dend = edit_node(dend, function(d) {attr(d, 'score') = runif(1); d})
Then for every node, we take the maximal absolute difference to all its child nodes
and parent node as the attribute abs_diff
dend = edit_node(dend, function(d, index) { n = length(index) s = attr(d, "score") if(is.null(index)) { # d is the top node s_children = sapply(d, function(x) attr(x, "score")) s_parent = NULL } else if(is.leaf(d)) { # d is the leaf s_children = NULL s_parent = attr(dend[[index[-n]]], "score") } else { s_children = sapply(d, function(x) attr(x, "score")) s_parent = attr(dend[[index[-n]]], "score") } abs_diff = max(abs(s - c(s_children, s_parent))) attr(d, "abs_diff") = abs_diff return(d) })
A dendrogram object.
# There is no example
NULL
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.