【问题标题】:Using apply on multidimensional array in R在R中的多维数组上使用apply
【发布时间】:2021-02-16 15:52:36
【问题描述】:

我有一个三维数组。数组中的第一个矩阵是相关值矩阵,第二个矩阵是这些相关值的 p 值矩阵。我想选择每行具有正相关且最显着相关的列。我之前只查看了 p 值矩阵,但我也只需要选择正相关。

仅来自 p 值矩阵的示例:

Assignments_Cor <- apply(Pmatrix,1,function(x) which(x <= .05 & x==min(x)))

包含相关矩阵和 p 值矩阵的数组:

Cor_array <- array(c(CorMatrix,Pmatrix), dim = c(564381,40,2))

数组示例:

Cor_array[1:3,,]
, , 1

           [,1]     [,2]       [,3]      [,4]      [,5]      [,6]       [,7]       [,8]       [,9]      [,10]       [,11]        [,12]
[1,] 0.05025017 0.151692 -0.1848826 0.4574867 0.6334903 0.1339035 0.07913106 -0.0256966 -0.2809419 -0.1032585 -0.09840864 5.568632e-05
[2,] 0.05025017 0.151692 -0.1848826 0.4574867 0.6334903 0.1339035 0.07913106 -0.0256966 -0.2809419 -0.1032585 -0.09840864 5.568632e-05
[3,] 0.05025017 0.151692 -0.1848826 0.4574867 0.6334903 0.1339035 0.07913106 -0.0256966 -0.2809419 -0.1032585 -0.09840864 5.568632e-05
            [,13]      [,14]      [,15]      [,16]      [,17]      [,18]     [,19]      [,20]     [,21]      [,22]       [,23]      [,24]
[1,] 0.0005633181 0.02967809 0.08584057 0.06479591 0.02071323 -0.1235664 0.3390882 0.04291397 0.1011558 0.08703663 -0.01512865 -0.1367294
[2,] 0.0005633181 0.02967809 0.08584057 0.06479591 0.02071323 -0.1235664 0.3390882 0.04291397 0.1011558 0.08703663 -0.01512865 -0.1367294
[3,] 0.0005633181 0.02967809 0.08584057 0.06479591 0.02071323 -0.1235664 0.3390882 0.04291397 0.1011558 0.08703663 -0.01512865 -0.1367294
         [,25]      [,26]       [,27]     [,28]     [,29]      [,30]      [,31]      [,32]      [,33]     [,34]      [,35]      [,36]
[1,] 0.1275199 0.06567954 -0.02009797 0.1533013 0.1641937 0.06995981 0.02188142 -0.1051497 0.06470244 0.3001694 0.02796141 0.08276204
[2,] 0.1275199 0.06567954 -0.02009797 0.1533013 0.1641937 0.06995981 0.02188142 -0.1051497 0.06470244 0.3001694 0.02796141 0.08276204
[3,] 0.1275199 0.06567954 -0.02009797 0.1533013 0.1641937 0.06995981 0.02188142 -0.1051497 0.06470244 0.3001694 0.02796141 0.08276204
           [,37]     [,38]    [,39]       [,40]
[1,] -0.03737224 0.0116931 0.130225 -0.02056016
[2,] -0.03737224 0.0116931 0.130225 -0.02056016
[3,] -0.03737224 0.0116931 0.130225 -0.02056016

, , 2

          [,1]      [,2]     [,3]      [,4]       [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]    [,12]     [,13]
[1,] 0.8767529 0.6379141 0.565124 0.1348092 0.02699434 0.6782239 0.8068801 0.9368179 0.3764017 0.7494653 0.7609224 0.999863 0.9986137
[2,] 0.8767529 0.6379141 0.565124 0.1348092 0.02699434 0.6782239 0.8068801 0.9368179 0.3764017 0.7494653 0.7609224 0.999863 0.9986137
[3,] 0.8767529 0.6379141 0.565124 0.1348092 0.02699434 0.6782239 0.8068801 0.9368179 0.3764017 0.7494653 0.7609224 0.999863 0.9986137
         [,14]     [,15]     [,16]     [,17]     [,18]     [,19]     [,20]     [,21]    [,22]     [,23]     [,24]     [,25]     [,26]
[1,] 0.9270498 0.7908135 0.8414306 0.9490552 0.7020171 0.2809266 0.8946503 0.7544271 0.787957 0.9627807 0.6717649 0.6928868 0.8392928
[2,] 0.9270498 0.7908135 0.8414306 0.9490552 0.7020171 0.2809266 0.8946503 0.7544271 0.787957 0.9627807 0.6717649 0.6928868 0.8392928
[3,] 0.9270498 0.7908135 0.8414306 0.9490552 0.7020171 0.2809266 0.8946503 0.7544271 0.787957 0.9627807 0.6717649 0.6928868 0.8392928
         [,27]     [,28]     [,29]     [,30]     [,31]     [,32]     [,33]     [,34]     [,35]     [,36]     [,37]     [,38]    [,39]
[1,] 0.9505668 0.6343094 0.6101065 0.8289519 0.9461855 0.7450102 0.8416568 0.3431528 0.9312604 0.7981765 0.9082003 0.9712292 0.686661
[2,] 0.9505668 0.6343094 0.6101065 0.8289519 0.9461855 0.7450102 0.8416568 0.3431528 0.9312604 0.7981765 0.9082003 0.9712292 0.686661
[3,] 0.9505668 0.6343094 0.6101065 0.8289519 0.9461855 0.7450102 0.8416568 0.3431528 0.9312604 0.7981765 0.9082003 0.9712292 0.686661
         [,40]
[1,] 0.9494312
[2,] 0.9494312
[3,] 0.9494312


structure(c(0.0502501693988644, 0.0502501693988641, 0.050250169398864, 
0.151692009166368, 0.151692009166368, 0.151692009166367, -0.184882599833557, 
-0.184882599833556, -0.184882599833556, 0.457486739533705, 0.457486739533705, 
0.457486739533705, 0.633490267138363, 0.633490267138363, 0.633490267138363, 
0.13390346680798, 0.13390346680798, 0.13390346680798, 0.0791310555319431, 
0.0791310555319426, 0.0791310555319425, -0.0256965953225384, 
-0.0256965953225386, -0.0256965953225386, -0.280941903238814, 
-0.280941903238813, -0.280941903238813, -0.103258518571999, -0.103258518571998, 
-0.103258518571998, -0.0984086417763842, -0.0984086417763844, 
-0.0984086417763844, 5.56863238651669e-05, 5.56863238655451e-05, 
5.56863238656109e-05, 0.000563318102446287, 0.000563318102446655, 
0.000563318102446727, 0.0296780938422325, 0.0296780938422335, 
0.0296780938422337, 0.0858405742363955, 0.0858405742363964, 0.0858405742363965, 
0.0647959077206117, 0.0647959077206113, 0.0647959077206112, 0.0207132277202097, 
0.0207132277202095, 0.0207132277202094, -0.123566367605933, -0.123566367605933, 
-0.123566367605933, 0.339088189112549, 0.339088189112549, 0.339088189112549, 
0.0429139743381961, 0.0429139743381953, 0.0429139743381951, 0.101155788270212, 
0.101155788270213, 0.101155788270213, 0.0870366270184804, 0.0870366270184799, 
0.0870366270184799, -0.0151286537942279, -0.015128653794228, 
-0.015128653794228, -0.136729446022951, -0.136729446022951, -0.136729446022951, 
0.127519897933732, 0.127519897933733, 0.127519897933733, 0.0656795357491338, 
0.0656795357491338, 0.0656795357491338, -0.0200979711493121, 
-0.0200979711493123, -0.0200979711493124, 0.153301329950428, 
0.153301329950428, 0.153301329950428, 0.164193663850843, 0.164193663850843, 
0.164193663850842, 0.0699598078601379, 0.0699598078601379, 0.0699598078601379, 
0.0218814243067889, 0.0218814243067892, 0.0218814243067893, -0.105149668955256, 
-0.105149668955257, -0.105149668955257, 0.0647024417919247, 0.064702441791925, 
0.064702441791925, 0.300169352611791, 0.300169352611791, 0.300169352611791, 
0.0279614122795903, 0.027961412279591, 0.0279614122795911, 0.0827620384095535, 
0.0827620384095534, 0.0827620384095534, -0.0373722422368233, 
-0.0373722422368239, -0.037372242236824, 0.0116931048088869, 
0.0116931048088874, 0.0116931048088875, 0.13022503266764, 0.13022503266764, 
0.13022503266764, -0.0205601573534089, -0.0205601573534081, -0.0205601573534079, 
0.876752872328793, 0.876752872328794, 0.876752872328794, 0.637914059576286, 
0.637914059576288, 0.637914059576288, 0.565123994635566, 0.565123994635567, 
0.565123994635567, 0.134809211200425, 0.134809211200425, 0.134809211200425, 
0.0269943418212044, 0.0269943418212044, 0.0269943418212044, 0.678223869263038, 
0.678223869263038, 0.678223869263038, 0.806880131717569, 0.80688013171757, 
0.806880131717571, 0.93681792762169, 0.93681792762169, 0.93681792762169, 
0.376401674285645, 0.376401674285647, 0.376401674285647, 0.749465324483993, 
0.749465324483994, 0.749465324483994, 0.760922433768518, 0.760922433768518, 
0.760922433768518, 0.99986295943793, 0.999862959437929, 0.999862959437929, 
0.998613709943805, 0.998613709943804, 0.998613709943804, 0.92704977032553, 
0.927049770325527, 0.927049770325527, 0.79081346941971, 0.790813469419708, 
0.790813469419708, 0.841430606294886, 0.841430606294887, 0.841430606294887, 
0.949055189573776, 0.949055189573777, 0.949055189573777, 0.70201714332711, 
0.70201714332711, 0.70201714332711, 0.280926561073373, 0.280926561073374, 
0.280926561073374, 0.894650281557856, 0.894650281557858, 0.894650281557859, 
0.754427144601464, 0.754427144601464, 0.754427144601464, 0.78795704692359, 
0.787957046923591, 0.787957046923591, 0.962780687830925, 0.962780687830925, 
0.962780687830925, 0.671764873371626, 0.671764873371626, 0.671764873371626, 
0.692886829156112, 0.692886829156112, 0.692886829156111, 0.839292837080267, 
0.839292837080267, 0.839292837080267, 0.950566777097027, 0.950566777097026, 
0.950566777097026, 0.634309375188224, 0.634309375188224, 0.634309375188224, 
0.610106477900623, 0.610106477900624, 0.610106477900624, 0.828951879003462, 
0.828951879003463, 0.828951879003463, 0.94618554441019, 0.946185544410189, 
0.946185544410189, 0.745010199773543, 0.745010199773542, 0.745010199773542, 
0.841656787001919, 0.841656787001918, 0.841656787001918, 0.343152837630054, 
0.343152837630053, 0.343152837630053, 0.931260394121355, 0.931260394121353, 
0.931260394121353, 0.798176452055549, 0.798176452055549, 0.798176452055549, 
0.908200304636095, 0.908200304636093, 0.908200304636093, 0.971229245245656, 
0.971229245245654, 0.971229245245654, 0.686661031492219, 0.68666103149222, 
0.68666103149222, 0.949431244886679, 0.949431244886681, 0.949431244886681
), .Dim = c(3L, 40L, 2L))

我没有太多使用数组或 apply() 的经验,而且我很困惑如何在两个矩阵中调用同一行并应用这些条件。因此,理想情况下,这三行都应返回第 5 列,作为每行具有正相关且显着相关的列。

我已经能够使用 for 循环实现解决方案,但我仍然希望使用 apply 来更有效地执行此操作。使用我上面给出的数组的前三行示例。

for (row in 1:3) {
    print(which(Cor_array [row,,1] > 0 & Cor_array [row,,2] <= .05 & Cor_array [row,,2]==min(Cor_array [row,,2])))
}

【问题讨论】:

标签: r arrays matrix apply


【解决方案1】:

在对 apply 和数组更加熟悉之后,这就是我要工作的内容。

apply(Cor_array,1,function(x) which(x[,1] > 0 & x[,2] <= .05 & x[,2]==min(x[,2])))

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多