2014-10-22 4 views
0

을 제공하는 함수를 작성하는 방법을 나는 함수R은 : 샘플 확률

p = c(0.4, 0.6) 
myfun = function(p){ 
    sample(1:2, 1, replace = TRUE, prob = p) 
} 

을 썼다 그리고 나는이 5 회를 반복합니다.

sapply(1:5, myfun) 

그러나 이것은 나에게

sample.int 오류 (길이 (x)를, 크기, 교체, PROB) 오류를 제공합니다 : 확률의 잘못된 수

+0

어쩌면 1 : 2에서 샘플링 하시겠습니까? 그렇지 않으면 prob는 길이가 10이어야합니다 ... – EDi

+0

아 맞습니다. 죄송합니다. 1 : 2에서 샘플링하고 싶지만 여전히 같은 오류가 발생합니다. – Adrian

+2

'replicate (5, sample (2, replace = TRUE, prob = c (0.4, 0.6)))' –

답변

0

당신은 수를 replicate으로 함수를 작성하십시오.

myfun <- function(x, p, n, replace = TRUE) { 
    m <- replicate(n, sample(x, replace = replace, prob = p)) 
    if(n == 1) c(m) else m 
} 
myfun(2, c(0.4, 0.6), 5) 
#  [,1] [,2] [,3] [,4] [,5] 
# [1,] 1 1 2 2 2 
# [2,] 2 2 2 1 2 
myfun(2, c(0.4, 0.6), 1) 
# [1] 2 1 
0

sample 함수를 사용하여 5 개의 값을 샘플링 할 수 있습니다.

p <- c(0.4, 0.6) 
sample(1:2, 5, replace = TRUE, prob = p) 
# [1] 2 2 2 2 1