R:将样本放入预定义大小的分区(分区样本向量)

Lym*_*ond 1 r sample vector data-partitioning

我正在研究一个由~10 ^ 6个值组成的数据集,这些数据集聚成可变数量的二进制数.在我的分析过程中,我试图随机化我的聚类,但保持bin大小不变.作为玩具示例(伪代码),这看起来像这样:

data <- list(c(1,5,6,3), c(2,4,7,8), c(9), c(10,11,15), c(12,13,14));
sizes <- lapply(data, length);
for (rand in 1:no.of.randomizations) {
    rand.data <- partition.sample(seq(1,15), partitions=sizes, replace=F)
}
Run Code Online (Sandbox Code Playgroud)

所以,我期待像"partition.sample",将采取一个载体(如SEQ(1,15)),并随机抽样它,返回与分隔为由已经给右单元大小的数据列表的功能"大小".

我一直在尝试自己写一个这样的功能,因为这个任务似乎并不那么难.然而,矢量的分割成给定的块大小看起来这将是一个很大更快,更有效的,如果做"引擎盖下",意思可能不是本地R.所以我不知道我是否只是错过了合适的名称功能,或者是否有人可以请我指出一个智能解决方案:-)

非常感谢您的帮助和时间!:-)

最好,

Lymond

更新:

"no.of.randomizations"是指我在整个"随机化循环"中运行的实际次数.稍后,这将显然包括比实际采样更多的步骤.

此外,我还有兴趣在更换的情况下进行上述取样专长.

在此先感谢,非常感谢您的帮助!

42-*_*42- 5

修订:这应该是相当有效的.它的复杂性主要应该在排列步骤中:

# A single step:
x <- sample( unlist(data)) 
list( one=x[1:4], two=x[5:8], three=x[9], four=x[10:12], five=x[13:16]) 
Run Code Online (Sandbox Code Playgroud)

如上所述,"no.of.ndomndom"可能是此过程重复应用的次数,在这种情况下,您可能希望包含以下replicate内容:

replic <- replicate(n=4, { x <- sample(unlist(data))
   list( x[1:4], x[5:8], x[9], x[10:12], x[13:15]) }  )
Run Code Online (Sandbox Code Playgroud)