我有一个ts值矩阵,我需要在列表中保存所有garch模型(每个列的模型构造)。我尝试了这个代码,它不起作用(我无法理解为什么):
model = list()
for (i in ncol(p)) {
if (length(model) == 0) {
model = list(ugarchfit(data=p[-1,i], spec=spec))
} else {
bufer = ugarchfit(data=p[-1,i], spec=spec)
model = cbind(model, bufer)
}
}
有人可以帮我解决这个问题吗?我需要使用列索引来解决此列表,并获取此列索引的模型。 谢谢!
答案 0 :(得分:2)
最好使用最终维度创建列表,而不是创建增长列表。
models <- vector("list", ncol(p))
然后覆盖列表的相关元素
for (i in seq_len(ncol(p))) {
models[[i]] <- ugarchfit(data = p[-1, i], spec = spec)
}
另一种解决方案是使用lapply
models <- lapply(
seq_len(ncol(p)),
function(i) {
ugarchfit(data = p[-1, i], spec = spec)
}
)
请注意,如果您使用=
将参数传递给函数并使用<-
进行分配,则代码会更清晰。