从不同的分布中绘制而不在R中循环

时间:2014-04-23 21:28:07

标签: r vector sample montecarlo

我希望按照绘制的方式进行矢量化。假设我有一个泊松参数值向量,对于每个参数,我想绘制1个样本。有没有办法在没有循环的情况下做到这一点?

1 个答案:

答案 0 :(得分:2)

您需要为每个函数参数指定向量以获取向量结果:

> rpois(rep(1,4), lambda = c(1,10,100,1000))
[1]    0   12   88 1031

关于第一个参数,请参阅the documentation

  

对于rpois,结果的长度由n确定,并且是其他函数的数值参数的最大长度。

     

除n之外的数值参数再循环到结果的长度。仅使用逻辑参数的第一个元素。

如果您需要在每个级别进行多次抽奖,那么您必须mapply(或Vectorize)此功能:

> mapply(rpois, rep(4,4), lambda = c(1,10,100,1000))
     [,1] [,2] [,3] [,4]
[1,]    0    8   78 1016
[2,]    0   10  106 1044
[3,]    1   14   97 1004
[4,]    0   13   94  983