开发者

is there a way to get a "subtree" from hclust ? (R)

开发者 https://www.devze.com 2023-01-03 13:04 出处:网络
I wish to create a \"subtree\" from an hclust object. For example, let\'s say I have the following object:

I wish to create a "subtree" from an hclust object.

For example, let's say I have the following object:

a <- list()  # initialize empty object
a$merge <- matrix(c(-1, -2,
                    -3, -4,
                     1,  2,
             -5,-6,
             3,4), nc=2, byrow=TRUE ) 
a$height <- c(1, 1.5, 3,4,4.5)    # define merge heights
a$order <- 1:6              # order of leaves(trivial if hand-entered)
a$labels <- 1:6# LETTERS[1:4]    # labels of leaves
class(a) <- "hclust"        # make it an hclust object
plot(a)                     # look at the result   

Now I wish the extract from it the following subtree:

a <- list()  # initialize empty object
a$merge <- matrix(c(-1, -2,
                    -3, -4,
                     1,  2
                ), nc=2, byrow=TRUE ) 
a$height <- c(1, 1.5, 3)    # define merge heights
a$order <- 1:4             # order of leaves(trivial if hand-entered)
a$labels <- 1:4# LETTERS[1:4]    # labels of leaves
class(a) <- "hclust"        # make it an hclust object
plot(a)                     # look at the result   

How coul开发者_开发百科d I access it?

(I know that cutree could get me the objects of the sub tree, but not create an actual hclust object)

Thanks for any help,

Tal


Not sure this is what you're looking for, but you could

a <- as.dendrogram(a)
branch1 <- a[[1]]
branch2 <- a[[2]]

par(mfrow=c(1,3))
plot(a)
plot(branch1)
plot(branch2)


If you have the distance matrix, then you might do something similar to this:

subtree <- function(d, idx) {
  hclust(dist(d[idx, idx]))
}
d <- matrix(rnorm(50 * 50), 50)
s <- subtree(d, sample(1:50, 20))
plot(s)
0

精彩评论

暂无评论...
验证码 换一张
取 消