首页 > 解决方案 > 在 For 循环中将预测图导出为 JPEG

问题描述

我创建了一个 for 循环,它读取单个时间序列文件 (.csv) 并将每个时间序列的预测值导出回 csv。我还想在 for 循环中将单个时间序列图导出为 JPEG。我是 R 新手,希望获得一些关于如何操作的指导。不确定在现有的 for 循环中创建另一个 for 循环是否是答案。

我已经尝试为一个时间序列导出一个示例图并且它有效。我无法弄清楚如何在现有的 for 循环中做到这一点。

这是 for 循环代码(从/到 CSV 导入/导出预测值)

setwd("wd")
 for (file in list.files(pattern = "*.csv")) {
     library(prophet)
     df <- read.csv(file)
     m <- forecast(df)
     future <- make_future_dataframe(m, periods = 90)
     out <- predict(m, future)
     write.csv(out, sprintf("out_%s.csv", file))
}

这是导出 JPEG 图的代码

jpeg('rplot.jpg')
plot(m,forecast)
dev.off()

编辑:

setwd('wd')

files <- list.files(pattern = "\\.csv$")

for (i in seq_along(files)) {
    library(prophet)
    df <- read.csv(files[i])
    m <- prophet(df)
    future <- make_future_dataframe(m, periods = 90)
    forecast <- predict(m, future)
    out <- predict(m, future)
    write.csv(out, sprintf("out_%s.csv", files[i]))

    jpeg(paste('rplot', files[i], '.jpg'))
    plot(m, forecast)
    dev.off()
}

标签: rfor-loopjpeg

解决方案


您需要在循环内更改文件名

setwd("wd")

files <- list.files(pattern = "\\.csv$")

for (i in seq_along(files)) {
  df <- read.csv(files[i])
  m <- forecast(df)
  future <- make_future_dataframe(m, periods = 90)
  out <- predict(m, future)
  write.csv(out, sprintf("out_%s.csv", i))

  jpeg(paste0('rplot', files[i], '.jpg'))
  plot(m, forecast)
  dev.off()
}

推荐阅读