我希望从一个hclust对象创建一个“子树”。
例如,假设我有以下对象:
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对象)
感谢您的帮助,
塔尔
答案 0 :(得分:6)
不确定这是你想要的,但你可以
a <- as.dendrogram(a)
branch1 <- a[[1]]
branch2 <- a[[2]]
par(mfrow=c(1,3))
plot(a)
plot(branch1)
plot(branch2)
答案 1 :(得分: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)