編集:
これは、予想される相対頻度でさまざまなパーティションをほぼ確実に生成するため、より優れています。
as.vector(rmultinom(1, size=length(vec), prob=rep(1, length(vec))))
# [1] 4 0 1 0 1 0
ここで求めている組み合わせオブジェクトは「パーティション」と呼ばれます。partitionsパッケージには、さまざまな種類のパーティションを生成するための便利な関数が多数含まれています。関数の出力を少し調整するだけで、parts()
探しているものが得られます。
library(partitions)
## Create a function
randPartition <- function(vec) {
pp <- parts(length(vec))
sample(pp[,sample(ncol(pp), 1)])
}
## Try it out a few times
randPartition(vec)
# [1] 1 1 1 1 1 1
randPartition(vec)
# [1] 2 0 0 2 0 2
randPartition(vec)
# [1] 0 0 0 0 0 6