-1

c(0,1)我经常面临这样的问题,即我想用不同的“成功”概率向量替换重复抽取样本prob,例如

prob <- c(1:5/10)

使用两个for循环的两个选项是:

A <- numeric()
n <- length(prob)
for(i in 1:n){
  A[i] <- rbinom( 1 , 1 , prob = prob[i] )
}

for(i in 1:n){
  A[i] <- sample( c(0,1) , 1 , prob = c(1-prob[i],prob[i]) )
}

是否有更直接(最佳,优雅)的方法来做到这一点,例如不使用for循环?

4

1 回答 1

2

所有分布函数都是完全矢量化的,例如:

set.seed(42)
rbinom(2, 1, c(0.01, 0.99))
#[1] 0 1

rnorm(2, mean = c(1, 1e3))
#[1]    0.4353018 1000.3631284

rf(2, c(1, 10), c(10, 1))
#[1] 1.408771 4.677464

等等

于 2016-08-30T12:44:33.043 回答