【发布时间】:2026-01-26 09:40:01
【问题描述】:
我试图弄清楚如何在使用 deSolve 时运行不同参数值的模拟。我对 R 非常陌生,并且难以解决我遇到的错误。我创建了一组非常简单的微分方程,并尝试从我的参数的均匀分布中运行 for 循环采样。
我的模特:
sir <- function(time, state, parameters) {
with(as.list(c(state, parameters)), {
dS <- -beta1 * (S * I)/N
dI <- beta1 * (S * I)/N - gamma1 * I
dR <- gamma1 * I
return(list(c(dS, dI, dR)))
})
}
init <- c(S = 99999, I = 1, R = 0)
尝试 for 循环:
outlist <- list()
plist <- cbind(beta1 = runif(30, min = .1, max = .9),
gamma1 = runif(30, min = .1, max = .9))
for(i in 1:nrow(plist))
outlist[[i]] <- ode(y = init, times = times, func = sir, parms = plist[i])
plot(out, outlist)
我收到以下错误:
eval(expr, envir, enclos) 中的错误:找不到对象“beta1”
非常感谢您提供的任何帮助,
【问题讨论】:
-
您没有显示所有代码。正如错误消息所暗示的那样,您没有为函数中的参数
beta1赋值。您应该在with之前的函数中插入一行beta1 <- parameter[1]。gamma1和N类似。对象times和N在哪里?你需要{和}在for循环的主体周围。还缺少out。现在我放弃了。
标签: r