R 使用 lapply 保存绘图

标签 r graphics time-series

我有一个名为 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 保存绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54412460/

相关文章:

r - 将 count() 应用于数据框中的每个因子变量

r - 不删除 NA 的子集函数

r - 使用 R 将 JSON 字符串转换为 JSON 对象

java - 在 Java 中设置 BufferedImage alpha 掩码

python - Pandas :时间戳系列中的唯一天数

python - 如何对齐两个大小不等的时间序列 numpy 数组?

java - Java 中的 Arima/Arma 时间序列模型

R:显示列中具有重复元素的所有行

opengl - 如何使用 glm::project 获取世界空间中某个点的坐标?

c - 如何在 C 中进行 GUI 编程?