计算来自矩阵列表的样本的汇总统计数据

时间:2014-01-18 23:32:28

标签: r list matrix sample

我有一个尺寸相同的矩阵列表,例如:

mat.list=rep(list(matrix(rnorm(n=12,mean=1,sd=1), nrow = 3, ncol=4)),3)

我想要做的是从列表中的每个矩阵中抽样多次随机列,例如在给定样本中,要采样的列索引是:

set.seed(10) #for reproducibility
idx.vec = sample(1:ncol(mat.list[[1]]),length(mat.list))

function将返回采样列的矩阵:

sample.mat = mapply('[', mat.list, TRUE, idx.vec)

对于每个这样的样本矩阵,我想计算每行的均值和方差。因此,结果将是样本上均值的矩阵和样本上的方差矩阵,这样这些矩阵的维数将是数字样本中列表中矩阵的行数。

最有效(时间和空间)的方法是什么?

1 个答案:

答案 0 :(得分:1)

我会使用replicaterowMeans作为均值,rowSds来自matrixStats

ll <- length(mat.list)
nn <- ncol(mat.list[[1]])

replicate(3,{
   idx.vec = sample(seq_len(nn),ll)
   sample.mat = mapply('[', mat.list, TRUE, idx.vec)
   list(mm = rowMeans(sample.mat),sd = rowSds(sample.mat))
},simplify=FALSE)