r - 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()
})
推荐阅读
- javascript - ReactJS:如何在状态(useState)中获取响应数组并在渲染/绑定时检查数组的长度
- android - Android Studio -error: 无法访问 InternalTokenProvider // firebaseAuth = FirebaseAuth.getInstance();
- codenameone - 由于 UIWebView 被弃用,应用被 Apple 拒绝
- javascript - 如何使用 Sweetarlet2 删除?
- java - 如何使用 OracleDataReader 类或其他类再次滚动到第一条记录?
- reactjs - 如何在 React 中发出 axios POST 请求?
- html - 在 iphone 视图中测试时,HTML 选择选项(选择下拉菜单)超出屏幕宽度
- python - 在kivy python中显示来自不同功能的图像
- php - 使用自定义查询时分页不起作用
- opengl - 将位置从顶点着色器传递到片段着色器的问题