R使用lApply保存绘图 [英] R Using lapply to save plots

查看:8
本文介绍了R使用lApply保存绘图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为allAR1的模型对象列表。对于每个模型对象,我需要使用tsdiag函数来生成诊断图,然后将该图保存到一个文件夹中。

我尝试使用jpeg()、lApply和dev.off()的组合将tsdiag应用到每个模型,然后将生成的绘图另存为图像文件。问题是,这似乎只保存了allAR1列表中第一个模型的诊断图,而我想要将所有模型的诊断图保存在allAR1中。

以下是我的代码和一个可重复使用的示例:

library(tseries)

data(nino)

nino = list(nino3 = nino3, nino4 = nino3.4)

ar <- function(dat, idx, order, m) {

  paes = arima(dat, order = order)
  bic = paes$loglik + m*log(length(dat))
  res = residuals(paes)

  all = list(paes = paes, 
             bic = bic, 
             res = res)

  assign(idx, all)

  return(all)

}


allAR1 = mapply(ar, dat = nino, idx = names(nino), 
                MoreArgs = list(order = c(1,0,0), m = 1), 
                SIMPLIFY = F)

allpaes = lapply(allpaes, function(x) x$paes)
jpeg(sprintf("C:/Users/owner/Documents/%s.jpeg", names(nino)))
lapply(allAR1, tsdiag, gof.lag = 1000)
dev.off()

我也尝试过lapply(allAR1, function(x) {jpeg(sprintf("C:/Users/owner/Documents/%s.jpeg", names(nino))); tsdiag(x$paes, 1000); dev.off()})。但是,这给出了与上面的代码相同的结果。

任何帮助都将不胜感激,因为我不确定我错在哪里。

推荐答案

以下是帮助您入门的代码片段:

library(tseries)
#from tsdiag help page
fit <- arima(lh, c(1,0,0))
#make an arbitrary list of model fits
models <- list(m1 = fit, m2 = fit)

lapply(1:length(models), function(x){
  jpeg(paste0(names(models)[x], ".jpeg"))
  tsdiag(models[[x]])
  dev.off()
})

这篇关于R使用lApply保存绘图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆