如何从R中包含20个元素的向量生成1000个样本,大小为8。如何将单个样本生成一千个? 请帮助
答案 0 :(得分:2)
如果X是包含20个元素的向量,则可以使用:
示例(X,8,替换= TRUE,prob = NULL)
将此语句循环1000次,如下所示:
Results <- matrix(, nrow = 1000, ncol = 8)
X=1:20
for (i in 1:1000){
Results[i, ]<-sample(X,8,replace=TRUE,prob=NULL)
}
矩阵中名为Sample的每行现在应代表1000个样本中的每一个。
答案 1 :(得分:0)
我认为使用*apply
系列优于使用for
循环,因为R
已经过矢量化。
以下是甚至适用于多核的代码
X=1:20
# on linux
library(parallel)
library(magrittr)
mclapply(rep(list(X), 1000), sample, 8, replace = TRUE, prob = NULL) %>%
simplify2array
# on windows
cl <- makeCluster(detectCores()) # type = "MPI" / type = "PSOCK"
parLapply(cl, rep(list(X), 1000), sample, 8, replace = TRUE, prob = NULL) %>%
simplify2array
stopCluster(cl)