R:如何编写一个给出概率的样本函数

时间:2014-10-22 20:33:25

标签: r sapply

我写了一个函数

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),大小,替换,概率):不正确   概率数

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用sample函数对5个值进行采样。

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