【发布时间】:2017-11-13 20:09:14
【问题描述】:
我有一个看起来像这样的矩阵,想要取每一列的平均值并将它们组合成一个新矩阵。
> MDA
price X3 X5 X10 X13 X20 X64 X86
[1,] 2.851921 0.19537 2.817065 6.5603 7.37657 2.273753 3.73926 4.08654
[2,] 1.355820 -0.58857 -0.253762 4.3871 3.62105 5.070533 6.03979 3.90909
[3,] -1.830597 1.74915 0.173217 5.5275 3.76552 3.100661 4.92384 3.16864
[4,] 6.535637 4.59728 5.848335 6.8814 10.25615 6.663288 3.87881 8.71351
[5,] 4.666041 -0.49024 2.353359 6.8693 8.86881 9.783803 5.42288 5.88306
[6,] 4.959884 2.09005 2.677156 10.1798 7.68598 5.771700 3.64374 4.89176
[7,] 4.014322 5.29507 0.238004 6.1883 6.52230 5.079508 5.33247 5.73703
...
为此,我一直在使用以下方法(注意所有这些都是在循环中完成的,因此是[x+1]):
MeanMDA[x+1,] <- c(mean(MDA[,1]),mean(MDA[,2]),mean(MDA[,3]),mean(MDA[,4]),mean(MDA[,5]),
mean(MDA[,6]),mean(MDA[,7]),mean(MDA[,8]))
虽然这很有效,但当列数变大时,它会变得非常麻烦。有时有超过 100 个变量,我必须检查并相应地编辑代码......有没有另一种更简洁的方法让代码获取每行的平均值并将其组合成一个矩阵?
【问题讨论】:
-
我们可以使用
colMeans,即colMeans(MDA) -
通常将聚合值(例如均值)放在与原始值相同的矩阵中并不是一个好主意。除此之外,您可以使用
rbind(MDA, ...)
标签: r