これは非常に単純化された例ですが、うまくいけば、私が話していることを皆に理解してもらうことができます:
real.length = c(10,11,12,13,13,13,13,14,15,50)
random.length = vector()
for (i in 1:length(real.length)){
random.length[i] = sample(min(real.length):max(real.length),1)
}
(注意: random.length=sample(min:max,10) と言うことができることはわかっていますが、実際のコードではループが必要です。)
ランダムな長さが実際の長さと同様の範囲であるだけでなく、分布も同様であることを望みます。rnorm を試してみましたが、実際のデータには正規分布がないため、見逃したオプションがない限り、うまくいかないと思います。
実際のデータを使用してサンプル関数の確率を設定することは可能ですか? したがって、この場合、10 ~ 15 の数値の重み/確率を高くし、50 のような大きな数値の重み/確率を低くします。
編集:ジェームズのソリューションを使用:
samples = length(real.length)
d = density(real.length)
random.length = d$x[findInterval(runif(samples+100),cumsum(d$y)/sum(d$y))]
random.length = subset(random.length, random.length>0)
random.length = random.length[1:samples]