gpt4 book ai didi

r - 如何在R中抽取一千个随机样本?

转载 作者:行者123 更新时间:2023-12-03 22:47:56 29 4
gpt4 key购买 nike

我已阅读 How to create a loop for generate a list of random samples in R?

我已经在互联网上搜索了这个问题的答案,但我只是遇到了一般的循环问题。

我想使用 sample 生成 5000 个随机均匀样本并将它们存储在一个向量中。我没有想法所以我来这里寻求帮助,我的代码:

Tests = NULL

for(i in c(1:5000)) {
Tests[i]<- sample(x = c(0:9), size = 50128, replace = T)
Record<-table(Tests)
}

我收到错误:

In Tests[i] <- sample(x = c(0:9), size = 50128, replace = T) :
number of items to replace is not a multiple of replacement length



至少 50 次(大概 5000 次)。我试过改变样本的大小,样本的数量,但似乎没有什么能摆脱这个错误。我试图将所有样本存储在一个名为 Record 的表中。 .

编辑:我知道如何使用 apply 制作循环/ sapply/ lapply ,但我认为这些不是生成大量随机样本的好选择,因为我认为您无法将它们存储在任何地方。

最佳答案

您的问题不在于 sample() ,但将结果存储在 NULL 的对象中.这很好用(尽管速度很慢,因为我们存储了一个 5000 x 50000 的对象):

Tests <- list()
for(i in 1:5000) {
Tests[[i]] <- sample(x = c(0:9), size = 50128, replace = TRUE)
}

然而, table(Tests)会失败,因为 table应用于列表尝试对列表进行交叉分类,例如
table(1:5,1:5)
## 1 2 3 4 5
## 1 1 0 0 0 0
## 2 0 1 0 0 0
## 3 0 0 1 0 0
## 4 0 0 0 1 0
## 5 0 0 0 0 1

但也许你真正想要的是
res <- replicate(5000,
table(sample(x = 0:9, size = 50128, replace = TRUE)))

这将创建一个 5000x10 的结果表(在我的机器上大约 130 秒)

最后, 更有效的方法是
t(rmultinom(5000,size=50128,prob=rep(1,10)))

(0.007 秒...)

关于r - 如何在R中抽取一千个随机样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38297254/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com