问题描述
我有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 (将#修改为@)