我正在研究一个模型来预测传染病的发病率,并且有一个模型可以有效地运行到昨天。现在我收到消息:
Error in checkFunc(Func2, times, y, rho) :
Model function must return a list
这里是代码:
library(deSolve)
run.model <- function(years,parameters,initial.state){
years.needed = c(min(years)-1, years)
results = ode(y=as.numeric(initial.state),
times=years.needed,
func=dx.model,
parms=parameters)
rv = list()
rv$parameters = parameters
rv$years = years
rv$results = process.ode.results(results, years)
rv
}
sim = run.model(years=1500:2020,
parameters=make.parameters(log.trate.hiv.neg.slope = log(1),
log.trate.hiv.neg.intercept = log(7),
early.progression.risk.immune=0.00485*4.5,
late.progression.risk.immune = 0.0005*4.5,
latent.duration = 5,
treat.tb.rate = 0.6,
primary.progression.in.immune = .014),
initial.state = init.state)
我不知道为什么会收到此错误。
错误消息指出:模型函数必须返回列表。
这意味着您的函数dx.model()
应该返回一个列表。 ?ode帮助文件说:
“ func的返回值应该是一个列表,其第一个元素是包含y相对于时间的导数的向量,并且其下一个元素是每个时间点所需的全局值。必须指定导数与状态变量y的顺序相同。“
不幸的是,您的示例不完整且不可复制,因此我们无法检查详细信息并让您的代码运行。