2017-07-23 90 views
-2

我有一个很大的矩阵,例如,计算矩阵行的最低值的平均值

> mat = matrix(runif(100), ncol = 5) 
> mat 
      [,1]  [,2]  [,3]  [,4]  [,5] 
[1,] 0.264442954 0.6408534 0.76472904 0.2437074 0.08019882 
[2,] 0.575443586 0.6428957 0.44188123 0.0230842 0.07502289 
[3,] 0.894885901 0.5926238 0.55431966 0.7717503 0.52806173 
[4,] 0.231978411 0.1192595 0.08170498 0.4264405 0.97486053 
[5,] 0.344765840 0.5349323 0.85523617 0.2257759 0.20549035 
[6,] 0.499130844 0.9882825 0.99417390 0.8070708 0.29963075 
[7,] 0.613479990 0.8877605 0.34282782 0.9525512 0.91488004 
[8,] 0.967166001 0.6115709 0.68169111 0.3067973 0.30094691 
[9,] 0.957612804 0.5565989 0.88180650 0.3359184 0.17980137 
[10,] 0.342177768 0.7735620 0.48154937 0.3692096 0.31299886 
[11,] 0.871928110 0.3397143 0.57596030 0.4749349 0.47800019 
[12,] 0.387563040 0.1656725 0.47796646 0.8956274 0.68345302 
[13,] 0.628535870 0.3418692 0.86513964 0.8052477 0.01850535 
[14,] 0.379472842 0.9176644 0.08829197 0.8548662 0.42151935 
[15,] 0.071958980 0.6644800 0.90061596 0.4484674 0.32649345 
[16,] 0.229463192 0.9995178 0.63995121 0.8369698 0.35091430 
[17,] 0.291761976 0.5014815 0.35260028 0.6188047 0.68192891 
[18,] 0.077610797 0.2747788 0.07084273 0.5977530 0.37134566 
[19,] 0.675912490 0.6059304 0.29321852 0.5638336 0.73866322 
[20,] 0.006010715 0.7697045 0.43627939 0.1723969 0.88665973 

我想提取每行的最低和最高2值并计算它们的平均值。 最终,我想生成一个新的矩阵,其中第一列在最低值的平均值中,第二列是最高值的平均值。 在此先感谢!

+1

这更像**,请为我做这**。 –

回答

1

我相信这你想要做什么:

do.call(rbind, apply(mat,1, function(x) {sorted = sort(x); 
return(data.frame(min=mean(head(sorted,2)), max=mean(tail(sorted,2))))})) 

输出:

  min  max 
1 0.14333229 0.8877635 
2 0.12311651 0.5283049 
3 0.09367614 0.5433373 
4 0.39926848 0.6361645 
5 0.05196898 0.5473783 
6 0.12876148 0.6153546 
7 0.29893684 0.8436462 
8 0.14254481 0.7023039 
9 0.20889814 0.8863141 
10 0.44838327 0.8641790 
11 0.14859312 0.5533045 
12 0.19728414 0.8619284 
13 0.37049481 0.7448965 
14 0.30070570 0.9320575 
15 0.30333510 0.6774024 
16 0.21908982 0.7077274 
17 0.61804571 0.9239816 
18 0.36525615 0.8531795 
19 0.22751108 0.4993744 
20 0.14251095 0.6353147 

希望这有助于!

+0

谢谢弗洛里安,这是完成这项工作。你让我在两篇文章中了解了rbind函数! ;) – Gabriel123

+0

太棒了,我从最后一个问题的答案中学到了一些新东西,这也让我们两个人;) – Florian