索引相关矩阵

时间:2013-03-14 12:51:55

标签: r

我有两个矩阵与下面的例子

MAT1

   row.names  geneid1  geneid2  geneid3  geneid4  geneid5
   sample1    0.99       8.76    8.78    7.65     5.4
   sample2    5.6        6.76    7.4     9.08     8.2
   sample4    7.5        6.4     6.4     6.1      8.6     

MAT2

  row.names  geneid1  geneid2  geneid3  geneid4  geneid5
   sample1    0.98       8.76    8.78    4.65     5.4
   sample2    0.6        6.76    1.4     9.78     6.2
   sample4    9.5        9.4     3.4     5.1      8.0  

如果我发现它们与

之间存在相关性
      cormat<cor(mat1,mat2)

并且结果矩阵看起来像这样

            geneid1  geneid2  geneid3  geneid4  geneid5
   geneid1    0.1       0.14    0.58    0.89    0.5
   geneid2    0.6       -0.2    0.4     0.45    0.6
   geneid3    0.5        0.7    0.3    -0.4     0.76
   geneid4    0.65       0.64   0.76   0.45     0.7
   geneid5    0.3        0.2    0.6     0.2     0.2

我想在矩阵中选择高于阈值0.5的那些值并省略其余的值。我只想要高于该值rowise和columnwise的基因id号。我尝试使用

         which(cormat>0.5)

但我不明白如何使用原始矩阵对它们进行索引,并仅保留那些高于0.5的行和列。除索引之外还有其他方法可以选择高度相关的值进行进一步分析。

1 个答案:

答案 0 :(得分:3)

使用参数arr.ind

which(cormat>0.5,arr.ind=TRUE)

set.seed(1)
m <- matrix(runif(9),3,3)
m
          [,1]      [,2]      [,3]
[1,] 0.2655087 0.9082078 0.9446753
[2,] 0.3721239 0.2016819 0.6607978
[3,] 0.5728534 0.8983897 0.6291140
which(m < 0.5)
[1] 1 2 5
which(m < 0.5, arr.ind=TRUE)
     row col
[1,]   1   1
[2,]   2   1
[3,]   2   2
m[which(m < 0.5, arr.ind=TRUE)]
[1] 0.2655087 0.3721239 0.2016819