我创建了一个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()
}
答案 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()
}