【发布时间】:2018-04-29 07:37:37
【问题描述】:
我正在使用 R 并使用表达式 sort(sample(1:60,6,replace=FALSE)) 生成 1 到 60 之间的 6 个数字,无需替换...
我想使用 FOR 语句创建一个循环,允许使用上述逻辑生成 n 个不同的样本。
关于如何构建这个循环有什么建议吗?
【问题讨论】:
我正在使用 R 并使用表达式 sort(sample(1:60,6,replace=FALSE)) 生成 1 到 60 之间的 6 个数字,无需替换...
我想使用 FOR 语句创建一个循环,允许使用上述逻辑生成 n 个不同的样本。
关于如何构建这个循环有什么建议吗?
【问题讨论】:
使用replicate:
replicate(sort(sample(1:60, 6, replace = FALSE)), n = 1000)
结果是一个大小为 6x1000 的矩阵,因此每一列都是一个样本。
我猜你想进行随机抽取,以允许相同的样本。如果您确实想要独特的样品,我试了一下:
lottery <- function(n) {
S <- replicate(sort.int(sample(1:60, 6, repl = F)), n = n)
while(d <- anyDuplicated(S, MARGIN = 2)) {
S <- cbind(S[, -d], sort.int(sample(1:60, 6, repl = F)))
}
S
}
【讨论】:
您可以使用rerun 函数返回一个包含您需要的结果的列表
library(purrr)
rerun(.n = 1000, sort(sample(1:60, 6, replace = FALSE))) %>%
unique()
【讨论】: