得到错误消息“ checkFunc(Func2,times,y,rho)中的错误:模型函数必须返回列表”

问题描述 投票:0回答:1

我正在研究一个模型来预测传染病的发病率,并且有一个模型可以有效地运行到昨天。现在我收到消息:

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)

我不知道为什么会收到此错误。

r
1个回答
0
投票

错误消息指出:模型函数必须返回列表。

这意味着您的函数dx.model()应该返回一个列表。 ?ode帮助文件说:

“ func的返回值应该是一个列表,其第一个元素是包含y相对于时间的导数的向量,并且其下一个元素是每个时间点所需的全局值。必须指定导数与状态变量y的顺序相同。“

不幸的是,您的示例不完整且不可复制,因此我们无法检查详细信息并让您的代码运行。

© www.soinside.com 2019 - 2024. All rights reserved.