2012-09-12 34 views
1

我試圖從多項式中抽取樣本以便按照它們的重量抽出一個向量的元素。按R索引的多項式樣本

例如,給定的矢量v < - C(10,30,60)我想是這樣的: [3,3,2,3,1,2,3,2,3,3]

這是我能想出迄今最好的:

v <- c(10, 30, 60) 
apply(rmultinom(10,1,v),2,function(x) which(x==1)) 

這工作適合於小N和K,但我確實需要生成從1套到10萬的指標10萬個樣本,因爲這種方法需要一個NxK臨時矩陣,它顯然不會起作用。我也可以使用for循環,但我希望現有的方法可以做到這一點。

回答

2

你可以只使用sample與概率參數

​​

一些樣本輸出:

v <- c(10, 30, 60) 
out <- sample(length(v), 100, replace = T, prob = v) 
out 
# [1] 3 3 3 3 3 3 3 2 2 2 2 3 3 1 3 3 3 3 2 2 3 2 1 3 3 2 3 3 3 2 2 3 2 3 1 2 2 3 3 
# [40] 3 2 2 2 2 3 2 1 3 3 3 3 3 3 3 3 1 2 2 3 3 3 2 3 3 3 1 3 3 3 2 1 3 3 3 2 2 3 3 
# [79] 3 3 1 3 2 3 3 3 3 2 3 3 2 2 3 2 3 2 2 2 2 3 
table(out) 
#out 
# 1 2 3 
# 8 33 59 
+0

真棒,謝謝。 – fairidox