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