2

我有两个与以下示例类似的矩阵

垫子1

   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     

垫子2

  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 的值并省略其余的值。我只想要在行和列上高于该值的基因 ID 号。我尝试使用

         which(cormat>0.5)

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

4

1 回答 1

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
于 2013-03-14T12:53:44.987 回答