我需要记录5次观测的最大值,模拟10,000次。这是为了找到这些最大值的平均值。
我目前的代码如下:
mc.sim1 = function(){
mu = 20; sigma = 4
(rnorm(5, mu, sigma))
}
m = replicate(10000, mc.sim1())
我无法解释如何记录每次迭代的最大值,而不是使用' max'来记录整个模拟集的最大值。功能
答案 0 :(得分:0)
如果要关注您的代码,请使用dim
了解m
是什么。
它是一个矩阵,每次模拟观察都有一行,每次复制都有一列。
一个非常简单直观的循环可能看起来像
recorded_max=numeric(dim(m)[2])
for (i in 1:dim(m)[2])
{
recorded_max[i]=max(m[,i])
}
答案 1 :(得分:0)
我建议使用apply
来计算每列的最大值(因为每列代表m
中的迭代):
colMax <- apply(m, 2, max)
另请注意以下@ shadow关于colMaxs
包中matrixStats
函数的评论。
答案 2 :(得分:0)
只需一个简单的sapply
即可
mc.sim1 = function(...){
mu = 20; sigma = 4
max(rnorm(5, mu, sigma))
}
maxdraw <- sapply(seq.int(10000), mc.sim1)
最后maxdraw
将是一个长度为10,000的向量,每次迭代最多有五个随机正态变量。