精華區beta R_Language 關於我們 聯絡資訊
我本身使用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) } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.91.75.186 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1574995070.A.8CC.html
bruce89: length() <=100 或許可以11/29 12:38
TreeMan: 你先算一次, 計算observedx/n, 然後不足樣本數/前面算出11/29 15:20
TreeMan: 的比值再*2 可得不足樣本所需n的2倍, 應該就結束了11/29 15:22
TreeMan: 你也可以參考https://ideone.com/DgbZUu11/29 15:22
我好像看懂了,不過有點小複雜xd ※ 編輯: empireisme (101.12.41.101 臺灣), 11/29/2019 15:35:53 > -------------------------------------------------------------------------- < 作者: andrew43 (討厭有好心推文後刪文者) 看板: R_Language 標題: Re: [問題] 生滿足條件的樣本個數 時間: Sat Nov 30 01:41:16 2019 可以改成 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) : } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.43.95 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1575049279.A.E11.html ※ 編輯: andrew43 (220.133.43.95 臺灣), 11/30/2019 01:58:02
TreeMan: 這個好 11/30 08:26
empireisme: 這個好 11/30 13:03