【问题标题】:Calculate average of lowest values of matrix rows计算矩阵行最低值的平均值
【发布时间】:2017-07-23 11:11:31
【问题描述】:

我有一个大矩阵,例如

> 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 个值并计算它们的平均值。 最终,我想生成一个新矩阵,其中第一列是最低值的平均值,第二列是最高值的平均值。 提前致谢!

【问题讨论】:

  • 这更像是请为我做这个

标签: r matrix average


【解决方案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

希望这会有所帮助!

【讨论】:

  • 感谢弗洛里安,这完成了工作。您让我在两篇文章中了解了 rbind 函数! ;)
  • 太好了,我从你上一个问题的答案中也学到了一些新东西,所以我们两个;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 2013-05-06
  • 2017-11-03
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多