R - 在同一数据集上使用函数 n 次

R - use function n times on the same data set

在不使用 for 循环的情况下,对同一数据集重复应用函数并给出最终结果的最有效方法是什么?例如

set.seed(123)

# create arbitrary data frame
mydf <- data.frame(a = rbinom(10, 5, .5), b = rbinom(10, 8, .5))

# silly function
Foo <- function(df) {
  df <- df * (1 + rnorm(1,0, .1))
  df <- df + 5
  df
}

# repeat function 5 times in a row on the same data frame
for (i in c(1:5)) {
  mydf <- Foo(mydf)
  mydf
}

由@nrussel 回答;对于给出的示例,使用 Recall() 给出了最优雅的代码。在速度方面,它类似于 for 循环。

doFoo <- function(df, n) {

           if (n == 0) return(df)

           Recall(Foo(df), n - 1)
         }

doFoo(mydf, 5)