簡體   English   中英

如何從矩陣中提取滿足特定特征的值

[英]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.trilower.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.adjacencyigraph列表。 您需要使用get.edgelist來獲取對的實際列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM