2016-08-30 10 views
-1

가 나는 종종 내가 prob을 확률 '성공'의 벡터 변화와 c(0,1)에서 교체 반복적으로 샘플을 그릴하려는 문제에 직면 같은다양한 확률의 벡터로 (0,1)에서 반복적으로 그릴 최적의 방법은 무엇입니까? <code>for</code> 루프를 모두 사용하여 (R)

prob <- c(1:5/10) 

두 가지 옵션은 다음과 같습니다

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 루프를 사용하지 않고?

+2

'rbinom (N, 1, PROB)' – Roland

+0

나는 참조 벡터화되어있다. '? rbinom'에 대해서는이 점에 관해서는 분명하지 않다. – tomka

+0

모든 분포 함수는 완전히 벡터화되어 있습니다. 예를 들어'rnorm (2, mean = c (1, 1e3))'도 할 수 있습니다. – Roland

답변

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