2017-08-28 2 views
0

Si j'ai une liste de matrices avec les mêmes dimensions, comment puis-je obtenir chaque élément de la liste des matrices dans R? Par exemple, j'ai 4 matrices:Comment obtenir le centile de chaque élément de la liste des matrices

> 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 

Le résultat que je veux est si je veux le minimum 2 moins de chaque élément.

> 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

Pouvez-vous montrer votre sortie attendue en fonction de l'entrée. Il n'est pas clair – akrun

+0

Sortie attendue ajoutée. Merci pour le commentaire! – Tian

+0

Solution ajoutée basée sur celle – akrun

Répondre

2

Si nous avons besoin de la deuxième valeur minimale, créer un array en enchaînant les matrix es ensemble, définissent les dimensions et utiliser apply avec le nécessaire MARGIN, sort les éléments du plus petit au plus grand et obtenir le deuxième élément

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 

REMARQUE: Basé sur le poste de l'OP, il ressemble à 'a', 'b', 'c', 'd' sont matrix séparés des objets dans l'environnement mondial

+1

Le paquet WGCNA fournit une bonne fonction "pquantile" qui peut faire ce travail rapidement en utilisant le parallélisme. Merci pour votre excellente solution! – Tian