R中的双聚类

R中的双聚类,r,cluster-analysis,binary-matrix,R,Cluster Analysis,Binary Matrix,我想在R中的二进制矩阵上应用集群。有一个很好的包叫做“biclust”,但它确实可以,并且并没有显示我想要的一切 我有一个二元矩阵,如下所示: 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 我的目标是将其双聚类(并显示)如下(可能是彩色的): 设置代码: # install.packages("biclust") (if necessary) l

我想在R中的二进制矩阵上应用集群。有一个很好的包叫做“biclust”,但它确实可以,并且并没有显示我想要的一切

我有一个二元矩阵,如下所示:

1 0 0 1 0 1 0
0 0 0 0 0 0 0
0 0 1 0 1 0 0
1 0 0 1 0 1 0
0 0 1 0 1 0 0
1 0 0 1 0 1 0
0 0 0 0 0 0 0
我的目标是将其双聚类(并显示)如下(可能是彩色的):

设置代码:

# install.packages("biclust") (if necessary)
library("biclust")

testMatrix <- matrix(c(1,0,0,1,0,1,0,
                       0,0,0,0,0,0,0,
                       0,0,1,0,1,0,0,
                       1,0,0,1,0,1,0,
                       0,0,1,0,1,0,0,
                       1,0,0,1,0,1,0,
                       0,0,0,0,0,0,0),
                     nrow = 7,
                     ncol = 7,
                     byrow = TRUE)
我可以通过以下方式分别显示群集:

drawHeatmap(x = testMatrix, bicResult = testCluster, number = 1) # shown in picture below
drawHeatmap(x = testMatrix, bicResult = testCluster, number = 2)

我可以通过以下方式显示整个集群矩阵(左上角的一个集群):

到目前为止还不错,但我想:

  • 显示器颜色切换。现在,1为红色,0为绿色
  • 我想查看原始矩阵的行和列。现在只显示了特定集群的行号和列号(使用drawHeatMap),而在整个集群矩阵(drawHeatMap 2)中没有显示行号和列号
  • 我想要一个有序的聚集矩阵。现在,只有drawHeatmap2中指定的集群显示在左上角,但对于矩阵的其余部分,我还希望其他集群从左上角到右下角有序排列
  • 这些更改是否可能(使用“biclust”包)?还是用R的另一种方式更好?

    更改biclust source package中的drawHeatmap()函数:

  • 跟踪(“drawHeatmap”,编辑=TRUE)
  • 更改以下内容:
    (a) 切换红色和绿色-在调用rgb()中切换rvect和gvect() (b) 原始行名而不是新的-将“labels=”更改为“=bicCols”和“=bicRows”
  • 打印行号:在轴之前关于行:cat(行)
  • 将行号保存到文件-在axis之前关于行:写入(bicRows,file=“FILENAME.txt”)

  • 使用bicluster包的源代码@RobbertRaats,你知道怎么回事吗?@Turcia,我已经更改了biclust源代码包中的drawHeatmap()函数:1。trace(“drawHeatmap”,edit=TRUE)2。更改以下内容:(a)切换红色和绿色-在调用rgb()中切换rvect和gvect(b)原始行名而不是新行名-将“labels=”更改为“=bicCols”和“=bicRows”。3.打印行号:在轴之前关于行:cat(行)。4.将行号保存到文件-在axis之前关于行:write(bicRows,file=“FILENAME.txt”)。谢谢Robber,它真的帮助了我。
    testCluster <- biclust(x = testMatrix, method=BCBimax())
    
    An object of class Biclust 
    call:
    biclust(x = testMatrix, method = BCBimax())
    Number of Clusters found:  2 
    First  2  Cluster sizes:
                          BC 1  BC 2
    Number of Rows:       3     2
    Number of Columns:    3     2
    
    drawHeatmap(x = testMatrix, bicResult = testCluster, number = 1) # shown in picture below
    drawHeatmap(x = testMatrix, bicResult = testCluster, number = 2)
    
    drawHeatmap2(x = testMatrix, bicResult = testCluster, number = 1) # shown in picture below
    drawHeatmap2(x = testMatrix, bicResult = testCluster, number = 2)