使用函数作为另一个函数的参数并在每个循环中执行它

时间:2016-11-25 20:06:41

标签: r function arguments

我在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循环时它都会运行。

我有什么方法可以做到这一点吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以传递函数本身而不是其返回值:

simulation(r1, 500)

但是你必须修改代码:

result <- result + f()[1]