R:生成向量,其中包含元素在样本中出现的次数

R: producing vector with number of times an element appears in sample

我有一个家庭作业问题,我有一个 30 人的样本,随机抽取其中的 10 个:

men [1] 15 18 14 6 22 17 20 3 16 9

然后从他们中随机抽取12个样本,确定每个人出现了多少次。

问题陈述一字不差地是“从人口规模为 30 的人群中抽取 10 名男性的 12 个样本,并记录每个人的数量 他出现的样本。"

我已经尝试了一个循环来解决这个问题,它会产生一个包含 10 个元素的向量,每个元素都与适当的索引对齐。

mtimes<-rep(0,12)
> repeat{
+ mtimes[menind]<-sum(sample(pop1,12,replace = TRUE) == men[menind])
+ menind = menind + 1
+ if (menind == 10){
+ break
+ }
+ }

这导致了一个向量:

mtimes [1] 0 0 1 0 0 0 0 0 0 0

看来第三个人不应该只出现一次,其他人都没有出现在样本中。

您可以在此处使用 replicatetable

set.seed(1)
table(replicate(n = 12, expr = sample(30, size = 10, replace = TRUE)))
# 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
# 3  2  3  5  2  2  5  5  3  3  6  7  4  5  8  2  1  3  2  9  3  7  2  8  3  3  5  3  3  3

我假设 "men" 你的意思是 1:30


另一种选择是将样本大小增加到 10*12,如

set.seed(1)
table(sample(30, size = 10*12, replace = TRUE))