[英]How to extract values from a matrix which meet certain characteristics
我有以下相关矩阵:
1 2 3 4 5 6
1 1.0000000 0.02108494 3.252095e-02 0.09734299 0.13358019 0.2405974
2 -0.4000000 1.00000000 3.844997e-08 0.03570393 0.05800796 0.1398141
3 -0.3730019 0.79262909 1.000000e+00 0.31386596 0.43753022 0.1695814
4 -0.2935198 -0.36689969 -1.808432e-01 1.00000000 0.05911566 0.2826286
5 -0.2666667 -0.33333333 -1.398757e-01 0.33195686 1.00000000 0.3298056
6 -0.2100903 -0.26261287 -2.448878e-01 -0.19270516 -0.17507524 1.0000000
其中对角线下方是相关指数,对角线上方是 p 值。 所以我想提取 p 值 < 0.05 但相关指数 > 0.5 的数据对。 我正在尝试这样的事情:
for (i in 1: 6){
for (j in i:6){
if( cor[i,j]<0.05 && cor[i,j]>0){
correlacion1<-cbind(corx1[i,j]) }} }
只是为了提取 p 值 <0.05 的值,但它也不起作用。 很难在对角线下方指定不同的特征
如果您实际发布数据而不是图像会更好
你想使用upper.tri
和lower.tri
把它们变成一个向量。 而不是您可以围绕这些循环创建一个二进制向量来捕获您想要的条件。 然后你可以通过vec2sm()
将该向量变成矩阵
pVals = correlation[upper.tri(correlation)]
cors = correlation[lower.tri(correlation)]
selected = vector(length=length(pVals))
selected[pVals<0.5 & cors>0]= TRUE
selectedMatrix = sm2vec(selected)
最后你会得到一个对称的二进制矩阵。 如果需要,您可以将其转换为与igraph
包中的graph.adjacency
的igraph
列表。 您需要使用get.edgelist
来获取对的实际列表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.