我想编写一个简单而优雅的函数,在给定一些起始值 x0 的情况下,将给定函数 f 应用于 n 次。 。它不一定是数字函数(例如 dirname )。
这个解决方案解决了这个问题,但看起来太复杂了:
it_call <- function(f, x0, n) Reduce(function(x, y) ifelse(x==1, f(x0), f(x)), 1:(n+1))
示例:
it_call(dirname, "/a/b/c/d/e", 3)
[1] "/a/b"
另一个例子:
i_call(sqrt, 256, 3)
[1] 2
答案 0 :(得分:1)
这样可行:
it_call <- function(f, x0, n) Reduce(function(x, y) f(x), 1:n, init=x0)
不确定您的“太复杂”的标准是什么。