代码之家  ›  专栏  ›  技术社区  ›  Gabi Steinberg

如何在树状图中,在r中选择低于某个截止值的所有簇

  •  1
  • Gabi Steinberg  · 技术社区  · 8 年前

    "X9_resid_matrix"
    

    这个矩阵代表227个蛋白质,告诉我每个蛋白质之间有多不同。因此,在右上角有一个零,因为1,1代表相同的蛋白质,因此它们是相同的或零不同。数字范围从0到9。

    然后,我使用以下命令绘制树状图:

    "plot(hclust(as.dist(X9_resid_matrix)))"
    

    我想让计算机只告诉我低于某个临界值的簇。

    也就是说,如果只有31个零距离的簇,我想要一个代码,计算机将使用它来告诉我这31个零距离簇是什么。

    cutree(hc, h=0)
    

    当我运行它时,似乎不会这样做。

    例如: Click here to view

    1 回复  |  直到 8 年前
        1
  •  0
  •   Shaun Wilkinson    8 年前

    我认为你想要的功能是 cut ,它采用树状图对象 x h ?dendrogram 了解更多详细信息)。

    newick <- "((Human:0.01,Chimp:0.03):0.02,(((Whale:0.04,Cow:0.01):0.01,Pig:0.01):0.01,(Dog:0.01,Cat:0.01):0.01):0.04);"
    install.packages("phylogram")
    dendro <- phylogram::read.dendrogram(text = newick)
    plot(dendro)
    

    tree plot

    然后,可以使用

    obj <- cut(dendro, h = 0.09)
    obj
    

    这将输出如下所示的列表:

    $upper
    'dendrogram' with 2 branches and 2 members total, at height 0.1 
    
    $lower
    $lower[[1]]
    'dendrogram' with 2 branches and 2 members total, at height 0.08 
    
    $lower[[2]]
    'dendrogram' with 2 branches and 5 members total, at height 0.06 
    

    注意,第二个元素 obj$lower

    subtree <- obj$lower[[2]]
    plot(subtree)
    

    subtree plot

    要将hc对象转换为树状图,可以使用 as.dendrogram 作用