我有一个30行的矩阵:
set.seed(1234)
m = matrix(rnorm(300), 30)
我想将它随机分成三个子矩阵(每个子矩阵包含10行)并计算每个子组的colMeans。
我怎么做?
答案 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)