使用Fomula作为R中的值循环赋值函数

问题描述

我有3个状态变量:S,I和R。我想运行一个循环以创建“ N”个微分方程(例如dS1,dS2,...,dSn,dI1,dI2,...,dIn ,dR1,dR2,...,dRn)与状态变量(S1,..,Sn,I1,...,In,...,R1,...,Rn)的N 3矩阵相关联。

为示例起见,假设我有N = 3,我想做如下事情:

sir <- function(time,state,parameters) {
  with(as.list(c(state,parameters)),{
    dS1= -beta*S1*I1
    dS2= -beta*S2*I2
    dS3= -beta*S3*I3 
    dI1= beta*S1*I1 - gamma*I1
    dI2= beta*S2*I2 - gamma*I2
    dI3= beta*S3*I3 - gamma*I3
    dR1= gamma*I1
    dR2= gamma*I2
    dR3= gamma*I3
    return(list(c(dS1,dS2,dS3,dI1,dI2,dI3,dR1,dR2,dR3)))
  })
}

我尝试将函数Assign与公式环境结合使用失败

sir <- function(time,{
for(i in 1:3){
  assign(paste("dS",i,sep = ""),formula(paste("beta*S","I",sep = ""))   
  assign(paste("dI","- gammaI",sep = ""))    
  assign(paste("dR",formula(paste("gammaI",sep = ""))    
}
    return(list(c(dS1,dR3)))
  })
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)