【发布时间】:2013-03-14 12:51:55
【问题描述】:
我有两个矩阵与以下示例类似
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 的值并忽略其余的值。我只想要在行和列上高于该值的基因 ID 号。我尝试使用
which(cormat>0.5)
但我不明白如何使用原始矩阵对它们进行索引并仅保留那些值高于 0.5 的行和列。除了索引之外,还有其他方法可以选择高度相关的值进行进一步分析。
【问题讨论】:
-
你关心它是负相关还是正相关?如果两者都对您的应用程序感兴趣,您可能希望在下面的@Hemmo 答案中使用
which( abs(m) < 0.5, arr.ind=TRUE)
标签: r