2017-08-28 68 views
0

如果我有一個矩陣列表具有相同的維度,我怎樣才能得到R中矩陣列表的每個元素?例如,我有4個矩陣:如何得到矩陣列表中每個元素的百分位數

> a 
      [,1]  [,2]  [,3] 
[1,] -0.8761453 0.2821336 -0.8541406 
[2,] -0.9649200 1.7734091 -1.2058440 
[3,] -0.4250063 -0.8197162 -1.3997540 
> b 
      [,1]  [,2]  [,3] 
[1,] -1.2096577 -0.5440074 0.6102016 
[2,] -0.1299645 -0.8943189 -1.8042720 
[3,] 1.0111488 0.2547343 0.2395172 
> c 
      [,1]  [,2]  [,3] 
[1,] 0.2853833 -0.2716714 0.2330467 
[2,] -0.7963095 -1.2120779 0.6909755 
[3,] 0.3479346 0.1803124 -0.7400176 
> d 
      [,1]  [,2]  [,3] 
[1,] -1.048740842 -1.0492152 -0.6889409 
[2,] -0.004154795 -0.6167335 -0.8028550 
[3,] -1.111915258 -2.1586534 -0.1448612 

我想要的結果是如果我想每個元素的第二個最小值。

> res 
      [,1]  [,2]  [,3] 
[1,] -1.0487408 -0.5440074 -0.6889409 
[2,] -0.7963095 -0.8943189 -1.2058440 
[3,] -0.4250063 -0.8197162 -0.7400176 
+0

可以根據輸入顯示您的預期輸出。目前尚不清楚 – akrun

+0

增加了預期產出。感謝評論! – Tian

+0

在此基礎上增加了解決方案 – akrun

回答

2

如果我們需要第二個最低值,通過連接matrix ES共同創造一個array,指定尺寸,並使用apply與所需MARGINsort從最小的元素來最大,並獲得第二個元素

apply(array(c(a, b, c, d), c(dim(a), 4)), c(1, 2), FUN = function(x) sort(x)[2]) 
#   [,1]  [,2]  [,3] 
#[1,] -1.0487408 -0.5440074 -0.6889409 
#[2,] -0.7963095 -0.8943189 -1.2058440 
#[3,] -0.4250063 -0.8197162 -0.7400176 

注:基於OP的帖子,它看起來像 'A', 'b', 'C', 'D' 是在全球環境中獨立matrix對象

+1

WGCNA包提供了一個很好的功能「pquantile」,可以通過使用並聯功能快速完成這項工作。感謝您的偉大解決方案! – Tian

相關問題