我正在构建代码来运行和管理站点的采样事件模拟,这些站点可能位于三个站点群组之一中。我使用rep()
以下代码分配群组标识符(1、2 或 3):
cohort <- rep(1:n.cohorts, n.sites)
我已将关键行放在首位,尽管要重现我的问题,您需要运行以下行,它们会在群组之间分配总站点数,以便向rep()
通话演示。
n.cohorts <- 3
s <- 10 # total available sites in this example
# different proportions of the total can be allocated to each cohort, for example
prop.control <- 0.4 ; prop.int <- 0.4 ; prop.ref <- 1-(prop.int+prop.control)
n.control <- prop.control * s; n.int <- prop.int * s; n.ref <- prop.ref * s
n.sites <- c(n.control, n.int, n.ref)
现在,n.sites
它自己返回
[1] 4 4 2
所以当我cohort <- rep(1:n.cohorts, n.sites)
再次运行我的电话时,我希望cohort
得到一个包含 10 个项目的列表,如下所示[1] 1 1 1 1 2 2 2 2 3 3
:然而,我得到的只有 9 个:
> cohort
[1] 1 1 1 1 2 2 2 2 3
如果我n.sites
像这样运行直接定义的相同代码:n.sites <- c(4, 4, 2)
,我会得到我期望的 10 个项目。我已经重做了几次以说服自己在这两种情况n.sites
下本身会产生相同的结果。
谁能解释为什么会这样?提前谢谢了。
大卫