我想在输入上应用一个函数以获得输出。然后,我想将该输出用作下一步的输入,并应用与上一步相同的功能。我想重复100次。 例如:
eq <- function (x) x^3 -2
eq0 <- eq(2)
eq1 <- eq(eq0)
.
.
.
eq100 <- eq(eq99)
任何人都可以提出解决方案。谢谢!
答案 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