[R] dendrogram: how to obtain leaf height

Dr. Herwig Meschke HerwigMeschke at t-online.de
Wed Dec 14 14:50:50 CET 2005


try

height.of.leafs <- dendrapply(hcd, function(e) attr(e, "height"))
unlist(height.of.leafs)

Regards
Herwig

-- 
Dr. Herwig Meschke
Wissenschaftliche Beratung
Hagsbucher Weg 27
D-89150 Laichingen

phone +49 7333 210 417 / fax +49 7333 210 418
email HerwigMeschke at t-online.de

On 12 Dec 2005 at 21:15, Diaz.Ramon wrote:

> Dear All,
> 
> How can the height of a leaf be extracted from a dendrogram? 
> 
> Sure, I can print it, but I am not able to, say, store it in an object. I think I understand that the height is a 
property of the split, not the leaf itself, but the printing functions display a "height" or "h" (which changes with 
"hang") and that is what I want. Obviously, the info is there (e.g., "str(dendrogram)"), I just don't see how to 
obtain it as I want.
> 
> 
> 
> hc <- hclust(dist(USArrests), "ave")
> hcd <- as.dendrogram(hc, hang = 0.001)
> 
> 
> dendrapply(rev(hcd), hnode)
> 
> ## None of the following work as I want
> 
> hnode <- function(x) {
>     ## nothing
>     if (is.leaf(x))
>         print(x$height)
> }
> 
> 
> hnode <- function(x) {
>     ## just prints
>     if (is.leaf(x))
>         print(x)
>     else
>         NULL
> }
> 
> 
> hnode <- function(x) {
>     ## doesn't work either
>     if (is.leaf(x))
>         strsplit(as.character(x), " ")[6]
>     else
>         NULL
> }
> 
> hnode <- function(x) {
>     ## prints; no storing
>     if (is.leaf(x))
>         print(x)
>     else
>         NULL
> }
> 
> hnode <- function(x) {
>     ## prints; no storing
>     if (is.leaf(x))
>         x
>     else
>         NULL
> }
> 
> 
> 
> 
> Thanks,
> 
> 
> R.
> 
> --
> Ramon Diaz-Uriarte
> Bioinformatics Unit
> Spanish National Cancer Centre (CNIO)
> http://ligarto.org/rdiaz
> 
> 
> **NOTA DE CONFIDENCIALIDAD** Este correo electrónico, y en s...{{dropped}}
> 
> 
>




More information about the R-help mailing list