如何将这个 for 循环转换为 apply 函数?

How to convert this for loop into an apply function?

我对 R 很陌生,目前正在研究我在网上找到的一个 Monte Carlo 模拟示例,但是它是在 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号。要获得行最小值,您可以使用 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))