在For循环中将预测图导出为JPEG

时间:2019-05-05 15:39:53

标签: r for-loop 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()
}

1 个答案:

答案 0 :(得分:1)

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

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()
}