【发布时间】:2022-01-03 11:17:55
【问题描述】:
标题可能听起来令人困惑,但其想法是使用 R 中的循环从两个位置创建一组 Channel Darters 鱼 (FSAdata) 的种群参数数据。以下代码正在运行
require(FSA)
require(FSAdata)
require(car)
data("DarterOnt")
str(DarterOnt)
location <- unique(DarterOnt$river)
vb <- vbFuns(param = "Typical")
for (i in 1:length(location)) {
dat <- filter(DarterOnt, river == location[i])
f.starts <- vbStarts(tl ~ age, data = dat)
f.fit[[i]] <- nls(tl ~ vb(age, Linf, K, t0), data = dat, start = f.starts)
}
f.fit[[1]]
但是,我应该先运行f.fit <- nls(tl ~ vb(age, Linf, K, t0), data = dat, start = f.starts),而不单独运行[[i]](在之前运行“失败的代码”之后),然后重新运行上述代码以使循环正常工作。如果没有,将会有一个警告Error: object 'f.fit' not found。我对 R 中的循环不太熟悉,但导致这个问题的原因是什么?有什么解决办法吗?
【问题讨论】:
-
循环前需要初始化
f.fit对象。在循环开始之前,将f.fit <- list()创建为一个空列表 - 然后您就可以在循环中分配给它,就像您拥有它一样。