将结果用于 R 中的下一个迭代步骤

Use result for next iterative step in R

我是迭代计算 R 的新手。我想做一个串行计算,因为我在下一个结果中使用了前一个结果。下面的代码显示了一次尝试计算序列差分方程的代码:

quadmap <- function(start,rho,niter) {
  #variables
  x_1<- start
  r<-rho
  n<-niter
  print(c('x_1','r','n'))
  print(c(x_1,r,n))  
  
  for (i in 1:n){
  x_k_1<-x_1
  xk <-  r*x_k_1*(1-x_k_1)
  x_k_1<- xk
  
  print(xk)
  
  }
  
}
  

我想在计算中使用新的xk作为新的'x_k_1',直到n次循环。

我没有得到想要的输出

第二次尝试给了我想要的结果:

quadmap <- function(start,rho,niter) {
  #variables
  x_1<- start
  r<-rho
  n<-niter
  print(c('x_1','r','n'))
  print(c(x_1,r,n))
  
 
 for(i in 1:n) {
    x_1 <-  r* x_1*(1- x_1)
    
    print(x_1)
  
 }
}

如果你对递归版本感兴趣,这里有一个例子

quadmap <- function(start,rho,niter) {
  if (niter == 1) return(start)
  x <- quadmap(start,rho,niter-1)
  c(x,rho*tail(x,1)*(1-tail(x,1)))
}

例子

> quadmap(0.5,1,5)
[1] 0.5000000 0.2500000 0.1875000 0.1523438 0.1291351

> quadmap(0.8,3,5)
[1] 0.8000000 0.4800000 0.7488000 0.5642957 0.7375982