R中的索引的多项式样本

时间:2012-09-12 17:35:16

标签: 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到100k的索引集生成100k样本,因为这种方法需要一个NxK临时矩阵,显然不会起作用。我也可以使用for循环,但我希望现有的方法可以做到这一点。

1 个答案:

答案 0 :(得分:2)

您可以将sample与prob参数

一起使用
sample(length(v), 10, replace = T, prob = v)

一些示例输出:

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