簡體   English   中英

R:如何編寫給定概率采樣的函數

[英]R: how to write a function that samples given the probability

我寫了一個函數

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),大小,替換,概率)中的錯誤:概率數不正確

您可以使用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

您可以使用sample函數對5個值進行采樣。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM