如何将此 for 循环转换为应用函数?

米姆斯

我对 R 很陌生,目前正在研究我在网上找到的蒙特卡罗模拟示例,但它是在 for 循环中给出的。我想摆脱这些,但正在努力将其转换为应用函数。任何帮助,将不胜感激:

for (k in 1:1000)
    {
       rolls = runif(1,3000,5000)
       bags = runif(1,2000,4000)
       cases = runif(1,150,200)*30
       total = min (rolls, bags, cases)
       results = rbind(results, data.frame(rolls, bags, cases, total))
     }
罗纳克·沙阿

你不需要for循环,也不需要任何apply函数。

runif可以一次生成多个n数字。要获得 rowwise 最小值,您可以使用pmin.

n <- 1000
rolls = runif(n,3000,5000)
bags = runif(n,2000,4000)
cases = runif(n,150,200)*30
total = pmin(rolls, bags, cases)
results <- data.frame(rolls, bags, cases, total)

正如@Roland 指出的一般情况下,您不能对模拟进行矢量化,您可以使用replicate函数。

simulation <- function() {
    rolls = runif(1,3000,5000)
    bags = runif(1,2000,4000)
    cases = runif(1,150,200)*30
    total = min(rolls, bags, cases)
    data.frame(rolls, bags, cases, total)
}

results <- t(replicate(1000, simulation(), simplify = TRUE))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章