随机抽样矩阵的计算

时间:2017-11-17 01:48:22

标签: r matrix mean sampling

我有一个30行的矩阵:

set.seed(1234)
m = matrix(rnorm(300), 30)

我想将它随机分成三个子矩阵(每个子矩阵包含10行)并计算每个子组的colMeans。

我怎么做?

1 个答案:

答案 0 :(得分:1)

我会使用示例获取random分组,rowsum获取组列总和,然后除以3得到均值。

下面,

rowsum(myMat, sample(rep(1:3, length.out=nrow(myMat)), nrow(myMat))) / 3

rep的length.out参数确保sample将有30个元素进行置换,10个1,10个2和10个3。 sample(rep(1:3, length.out=nrow(myMat)), nrow(myMat))返回rowsums用于分组的这组整数的随机排列。

此计算的前五列返回

        [,1]       [,2]        [,3]      [,4]       [,5]
1 -1.5317639 -2.4137994  0.88905767 0.5783829  0.2593529
2 -0.6781386 -0.5701739 -0.03524136 0.3623384  1.4022571
3 -0.7543473 -2.5322095  0.53218802 0.1745588 -0.5748851

数据

set.seed(1234)
matrix(rnorm(300), 30)