在R中的列表中保存多于1个模型

时间:2016-05-30 15:28:29

标签: r

我有一个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)
  }
}

有人可以帮我解决这个问题吗?我需要使用列索引来解决此列表,并获取此列索引的模型。 谢谢!

1 个答案:

答案 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)
  }
)

请注意,如果您使用=将参数传递给函数并使用<-进行分配,则代码会更清晰。