Re: [問題] 生滿足條件的樣本個數

作者: andrew43 (討厭有好心推文後刪文者)   2019-11-30 01:41:16
可以改成 Recursive Function。
samplemaker_weibull <-
function(n = 100,
shape = 4,
scale = 1,
end = 1.5,
res) {
x <- rweibull(n, shape, scale)
t <- runif(n, 0, end)
observedx <- x[which(x > t)]
if (length(observedx) == n) {
return(observedx)
} else {
res <- observedx
return(
c(res,
samplemaker_weibull(n - length(res), shape, scale, end, res)
)
)
}
}
samplemaker_weibull()
過程就是先做一次,若長度不夠就自己遞迴。
若是第一次寫遞迴可能會看不懂,可先從簡單的例子練習。
留意到需要增加一個 res parameter 來達成串接,但不需要指定值。
※ 引述《empireisme (empireisme)》之銘言:
: 我本身使用R大概一兩年
: 我想要生滿足條件的樣本直到某個特定數字 例如100個
: 目前自己想到的解法是 生遠大於100個樣本
: 例如1000個 再去找前100個 但這樣就會生超多個
: 我知道可能可以使用while 或是 repeat做到
: 但是想不太到條件
: 希望前輩可以提示一下怎麼設條件的作法
: 我的目的是使得obserdx的個數到n個 (例如100)
: observedx 的條件如下
: observedx <- x[which(x>t)]
: 以下是我的生樣本code
: samplemaker_weibull<- function(n=130,shape=4,scale=1,end=1.5 ){
: x <- rweibull(n,shape,scale)
: t <- runif(n,0,end)
: observedx <- x[which(x>t)]
: return(observedx)
: }
作者: TreeMan (好啊...)   2019-11-30 08:26:00
這個好
作者: empireisme (empireisme)   2019-11-30 13:03:00
這個好

Links booklink

Contact Us: admin [ a t ] ucptt.com