我对 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] 删除。
我来说两句