Я хочу применить функцию к входу, чтобы получить вывод.Затем я хочу использовать этот вывод в качестве входных данных для следующего шага и применить ту же функцию, которая использовалась на предыдущем шаге.Я хочу повторить так 100 раз.Например:
eq <- function (x) x^3 -2 eq0 <- eq(2) eq1 <- eq(eq0) . . . eq100 <- eq(eq99)
Может кто-нибудь предложить решение.Спасибо!
Мы можем использовать что-то вроде while loop
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 сразу после нескольких итераций.
Inf
Просто сохраните результат в той же переменной, в которой вы запускаете функцию.
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
Вот рекурсивный способ.
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