n次应用函数;使用last的输出作为next的输入

时间:2018-12-03 10:43:13

标签: r

我想在输入上应用一个函数以获得输出。然后,我想将该输出用作下一步的输入,并应用与上一步相同的功能。我想重复100次。 例如:

eq <- function (x) x^3 -2
eq0 <- eq(2)
eq1 <- eq(eq0)
.
.
.
eq100 <- eq(eq99)

任何人都可以提出解决方案。谢谢!

3 个答案:

答案 0 :(得分:2)

这是一种递归方式。

recur <- function(FUN = eq, x, n){
  if(n > 0) {
    x <- recur(FUN, FUN(x), n - 1)
  }
  x
}

recur(eq, 2, 100)
#[1] Inf

还有一个非递归的。

iter <- function(FUN = eq, x, n){
  for(i in seq_len(n)) x <- FUN(x)
  x
}

iter(eq, 2, 100)
#[1] Inf

答案 1 :(得分:2)

我们可以使用类似while循环的方式

eq <- function (x) x + 1
i <- 1             #Index to count loop
n <- 2             #Starting value
while(i <= 10) {   #Check the condition, change this to 100 for your case
  eq1 <- eq(n)     #Call the function
  n <- eq1         #Store the new value into a variable to use it in next iteration
  i = i + 1        #Increase the counter
  print(n)         #Print the value
}


#[1] 3
#[1] 4
#[1] 5
#[1] 6
#[1] 7
#[1] 8
#[1] 9
#[1] 10
#[1] 11
#[1] 12

PS-自从原始函数经过几次迭代后立即移至Inf以来,我已更改了函数使其变得简单。

答案 2 :(得分:2)

只需将结果存储在运行该函数的相同变量中即可。

a=2
eq=function(x){
  x^3-1
}
for (i in 1:10){
a=eq(a)

print(a)
}
[1] 7
[1] 342
[1] 40001687
[1] 6.40081e+22
[1] 2.622435e+68
[1] 1.803492e+205
[1] Inf
[1] Inf
[1] Inf
[1] Inf