【发布时间】:2017-02-09 20:11:21
【问题描述】:
我有以下代码
set.seed(30)
nsim <- 50 ## NUMBER OF REPLICATIONS
demand <- c(12,13,24,12,13,12,14,10,11,10)
res <- replicate(nsim, {
load <- runif(10,11,14)
diff <- load - demand ## DIFFERENCE BETWEEN DEMAND AND LOAD
return(sum(diff < 0))
})
res
[1] 6 5 7 4 4 5 4 3 6 4 5 5 5 4 2 5 3 3 3 5 3 2 4 6 5 4 4 3 5 6 4 4 3 6 5 3 5 5 4 3 3
[42] 6 4 4 4 6 6 5 4 5
我有一个庞大的数据集,问题是计算每个复制的平均值的最快方法是什么。例如,第一次复制中的 res 为 6,因此第二次复制的结果应为 6/1=6,第三次复制 6+5/2=5.5,最后一次复制为 sum(res )/nsim=4.38
【问题讨论】:
-
除非您面临内存限制,否则一次生成所有数据并将其粘贴到矩阵或 data.frame 中,例如
sapply(seq(nsim), function(x){runif(10,11,14)})或matrix(runif(10 * nsim, 11, 14), nrow = nsim)。然后以矢量化方式应用您的其他步骤。 -
对我来说,我不清楚如何将这些过程应用于我的数据框并绘制 LOLE 除以迭代次数
-
也许
cumsum(res)/(1:length(res))
标签: r simulation replicate