计算矩阵行的最低值的平均值

时间:2017-07-23 11:11:32

标签: r matrix average

我有一个大矩阵,例如

> 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 个答案:

答案 0 :(得分: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

希望这有帮助!