如何循环我的代码,使其具有4个直方图而不是1个


N <- 10000 ; maxbound = 20 
one_side_normal <- function(N) {
f <- numeric(N);
for (i in 1:N) {
X = rexp(1,rate=1);
uniform = runif(1);
while (uniform>exp((-X^2)+X) ){
X = rexp(1,rate=1);
uniform=runif(1);
}
f[i] <- X
}
return(f)
}

上述代码使用接受-拒绝方法从单侧正态分布(样本=10000(中进行采样。对于101001000&10000?

我们可以使用lapplyN值上循环并应用该函数。由于只有一个参数,所以我们不需要任何lambda函数。它将返回一个list

lst1 <- lapply(c(10, 100, 1000, 10000), one_side_normal)

另一个选项是经典的for循环。为了存储输出,我们可以创建一个固定长度的NULLlist,即"N"值向量的长度。然后,在"N"的序列上循环,应用函数并将输出分配(<-(给具有该索引的相应list元素

nvec <- c(10, 100, 1000, 10000)
lst1 <- vector('list', length(nvec))
for(i in seq_along(nvec)) lst1[[i]] <- one_side_normal(nvec[[i]])

最新更新