我在R中有几个函数可以得到具有不同随机结果的向量,让我们将这些函数称为r1,r2,r3和r4。
现在我想写另一个名为'simulation'的函数,它模拟上面这些函数之一,并评估不同的值,如期望值等。 此外,我只想要一个可以模拟r1,r2,r3或r4的函数,这是可能的,因为它们都会输出相同类型的向量。
我通过以下方式尝试过:
simulation <- function(f, n) {
result <- 0
for (i in 1:n) {
result <- result + f[1]
}
result
}
然后我像这样执行: 模拟(r1(),500)
这很好用,但问题是函数r1()只运行一次,但由于我想模拟它n次,我希望每次运行for循环时它都会运行。
我有什么方法可以做到这一点吗?
提前致谢!
答案 0 :(得分:3)
您可以传递函数本身而不是其返回值:
simulation(r1, 500)
但是你必须修改代码:
result <- result + f()[1]