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

问题描述

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

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循环为止。

我没有得到想要的输出

解决方法

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

height
,

如果您对递归版本感兴趣,请参考以下示例

quadmap <- function(start,rho,niter) {
  if (niter == 1) return(start)
  x <- quadmap(start,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