我想对负载和需求之间的差异进行10000次模拟。我需要所有模拟的负差异比例。我在下面使用了for循环,但这对于大型模拟来说并不适用,因为它需要我稍后手动计算所有内容。
我如何对复制做同样的事情?使用replicate over for循环有什么好处?
li:not(.es):hover {
background-color: #fff;
color: #878787;
}
.es {
background-color: red;
color: white;
}
// script
$('li').on('click', function() {
$('li').removeClass("es");
$(this).addClass("es");
var selectedEmpId = $(this).attr("eI");
});
答案 0 :(得分:1)
使用for循环的一大缺点是,您不会自动将所有内容存储在对象中。 replicate()
为你做到了。
另一个提示:保留所有不会改变的内容(如demand
的定义)
如何使用replicate()
:
nsim <- 10000
demand <- c(6,7,6,5,6,7,8,7,6,5)
res <- replicate(nsim,{
load <- rnorm(10,8,2)
diff <- load - demand
return(sum(diff < 0))
})
res <- sum(res) / nsim
return()
函数不是必需的(代码块返回它执行的最后一行),但我添加它以便您立即看到将在res
中存储的内容。
但实际上你不需要循环来做这件事(假设你准确地描述了你想要的东西)。您可以使用矢量化和回收来执行此操作:
nsim <- 10000
demand <- c(6,7,6,5,6,7,8,7,6,5)
load <- rnorm(10*nsim, 8, 2)
diff <- load - demand
res <- sum(diff < 0) / nsim
replicate
或for
循环实际上只有在您希望保留每个模拟的结果时才有意义。由于您只对整体结果感兴趣,因此第二个代码块将更具性能和R-like。