2017-07-23 99 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