我想模拟从20个袋子中抽出10个球,颜色分布为黑色和白色的50/50。拉出后,球不应该放回去。我感兴趣的价值是每次抽取的白人数量。
为此我创建了一个函数,它给了我确切的值。它首先创建一个从1到20(样本)的随机数列表,然后对黑色(11或更高的数字)进行排序,之后给出剩余数量(长度(白色))
wins <- function()
{
sample <- sample(1:20, 10, replace = FALSE)
whites <- subset(sample, sample<= 10)
return(length(whites))
}
现在我想创建一个包含500个条目的表,每个条目都是函数给出的值。当我把它放在data.table中时,它只会评估一次函数并给我一个包含500个相同条目的表。
data.table(shot=c(1:500), k=wins())
shot k
1: 1 5
2: 2 5
3: 3 5
4: 4 5
5: 5 5
---
496: 496 5
497: 497 5
498: 498 5
499: 499 5
500: 500 5
我必须做些什么?
答案 0 :(得分:3)
试试这个:
replicate(500, sum(sample(1:20, 10) <= 10))
输出到数据表:
data.table(shot = c(1:500),
k = replicate(500, sum(sample(1:20, 10) <= 10)))
如果我们希望使用您的功能:
data.table(shot = c(1:500),
k = replicate(500, wins()))