2010-06-13 76 views
4

我希望從hclust對象創建一個「子樹」。有沒有辦法從hclust中獲得「子樹」? (R)

例如,假設我有以下對象:

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 

現在,我想從它的提取物下面的子樹:

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 

我怎麼能訪問它?

(我知道cutree可以讓我的子樹的對象,而不是創建一個實際hclust對象)的任何幫助

感謝,

塔爾

回答

6

不知道這是什麼你要找的,但你可以

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

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

正是我在找的東西。謝謝尼科。 – 2010-06-14 10:53:28

0

如果你有距離矩陣,那麼你可能會做同樣的事情到這一點:

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