从 R 中的列表中替换矩阵元素进行采样

Sampling with replacement a matrix element from a list in R

我在这里生成一个矩阵对象列表。

c<-11
l<-10
v<-list()
p<-100

for(i in 1:p) {
m<-matrix(sample(c(-1,1),l*c,replace=TRUE),l,c)
v[[i]]<-m
}

在这一点上,我试图通过替换列表向量 'v' 中的矩阵元素随机抽样。

sample(v,size=11,replace=TRUE)

但是这个示例函数 returns 前 11 个元素,而不是从 'v' 中的 100 个元素中随机 selecting。

首先,我如何从 'v' 中随机 select 矩阵对象并将这些随机样本存储在新对象中?

如果我们想从 list 'v' 的每个元素中采样,请使用 sapply 循环遍历 list

out <- sapply(v, function(x) sample(x, size = 11, replace = TRUE))

或者如果您想从 list 的序列中采样 11 个 list 元素,sample,并使用该索引提取 list 元素

out <- v[sample(seq_along(v), 11, replace = TRUE)]

如果我没理解错的话,你可以抽取索引

v[sample(1:p,size = c,replace = TRUE)]