get_nodes_attr {dendextend} | R Documentation |
Get attributes of dendrogram's nodes
Description
Allows easy access to attributes of branches and/or leaves, with option of returning a vector with/withough NA's (for marking the missing attr value)
Usage
get_nodes_attr(
dend,
attribute,
id,
include_leaves = TRUE,
include_branches = TRUE,
simplify = TRUE,
na.rm = FALSE,
...
)
Arguments
dend |
a dendrogram object |
attribute |
character scalar of the attribute ( |
id |
integer vector. If given - only the attr of these nodes id will be returned (via depth first search) |
include_leaves |
logical. Should leaves attributes be included as well? |
include_branches |
logical. Should non-leaf (branch node) attributes be included as well? |
simplify |
logical (default is TRUE). should the result be simplified to a vector (using simplify2array ) if possible? If it is not possible it will return a matrix. When FALSE, a list is returned. |
na.rm |
logical. Should NA attributes be REMOVED from the resulting vector? |
... |
not used |
Value
A vector with the dendrogram's nodes attribute. If an attribute is missing from some nodes, it will return NA in that vector.
Source
Heavily inspired by the code in the
function labels.dendrogram
,
so credit should go to Martin Maechler.
See Also
get_leaves_attr, nnodes, nleaves
Examples
# define dendrogram object to play with:
hc <- hclust(dist(USArrests[1:3, ]), "ave")
dend <- as.dendrogram(hc)
# get_leaves_attr(dend) # error :)
get_leaves_attr(dend, "label")
labels(dend, "label")
get_leaves_attr(dend, "height") # should be 0's
get_nodes_attr(dend, "height")
get_leaves_attr(dend, "leaf") # should be TRUE's
get_nodes_attr(dend, "leaf") # conatins NA's
get_leaves_attr(dend, "members") # should be 1's
get_nodes_attr(dend, "members", include_branches = FALSE, na.rm = TRUE) #
get_nodes_attr(dend, "members") #
get_nodes_attr(dend, "members", simplify = FALSE)
get_nodes_attr(dend, "members", include_leaves = FALSE, na.rm = TRUE) #
get_nodes_attr(dend, "members", id = c(1, 3), simplify = FALSE)
get_nodes_attr(dend, "members", id = c(1, 3)) #
hang_dend <- hang.dendrogram(dend)
get_leaves_attr(hang_dend, "height") # no longer 0!
get_nodes_attr(hang_dend, "height") # does not include any 0s!
# does not include leaves values:
get_nodes_attr(hang_dend, "height", include_leaves = FALSE)
# remove leaves values all together:
get_nodes_attr(hang_dend, "height", include_leaves = FALSE, na.rm = TRUE)
## Not run:
library(microbenchmark)
# get_leaves_attr is twice faster than get_nodes_attr
microbenchmark(
get_leaves_attr(dend, "members"), # should be 1's
get_nodes_attr(dend, "members", include_branches = FALSE, na.rm = TRUE)
)
## End(Not run)