在R中徘徊

时间:2016-07-21 07:19:19

标签: r cluster-analysis binary-matrix

我想在R中的二进制矩阵上应用聚类。有一个很好的包叫做#34; 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

我的目标是将以下(可能是彩色的)双重(并显示):

1 1 1 0 0 0 0
1 1 1 0 0 0 0
1 1 1 0 0 0 0
0 0 0 1 1 0 0
0 0 0 1 1 0 0
0 0 0 0 0 0 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)

我应用了&#34; biclust&#34;的双重功能。 R包:

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)

Picture

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

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

Picture

到目前为止一切顺利,但我想:

  1. 切换显示颜色。现在1为红色,0为绿色。
  2. 我想查看原始矩阵的行和列。现在只显示特定簇的行号和列号(使用drawHeatMap),并且在整个聚簇矩阵(drawHeatMap2)中没有显示行号和列号。
  3. 我想要一个排序很好的聚簇矩阵。现在只有drawHeatmap2中指定的簇显示在左上角,但对于矩阵的其余部分,我还希望其他簇从左上角到右下角的其他矩阵排序很好。
  4. 这些更改是否可行(使用&#34; biclust&#34;包)?或者用R做另外一种方式更好吗?

1 个答案:

答案 0 :(得分:3)

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

  1. trace(“drawHeatmap”,edit = TRUE)
  2. 更改以下内容:
    (a)切换红色和绿色 - 在呼叫rgb()中切换rvect和gvect (b)原始rownames而不是new - 将'labels ='更改为'= bicCols'和'= bicRows'。
  3. 打印rownumbers:在轴之前关于行:cat(bicRows)。
  4. 将rownumbers保存到文件 - 在轴之前关于行:write(bicRows,file =“FILENAME.txt”)