使用向量生成n个样本

时间:2015-11-08 10:54:10

标签: r

如何从R中包含20个元素的向量生成1000个样本,大小为8。如何将单个样本生成一千个? 请帮助

2 个答案:

答案 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)