У меня есть data.table
с колонкой с прогнозами некоторых значений, и я хочу сохранить графики каждого из этих прогнозов с ggplot2::autoplot
.
Я пытаюсь это (воспроизводимый пример):
require(data.table)
require(forecast)
require(ggplot2)
## create data.table
a <- data.table(id = 1:2)
a[, x := .(list(sample(1:10, 5, FALSE))), by = id]
a[, y := .(list(forecast(x[[1]]))), by = id]
## plot by id:
a[, {png(paste0(id, ".png")); autoplot(y[[1]]); dev.off()}, by = id]
но он создает пустые холсты.
Однако работает следующий код:
png("1.png")
a[1, autoplot(y[[1]])]
dev.off()
Что заставляет меня думать, что это что-то с цепочкой команд внутри {}
. Следующий код также работает (поскольку plot
не работает с объектами прогноза, я строю переменную x
:
a[, {png(paste0(id, ".png")); plot([[1]]); dev.off()}, by = id]
, что заставляет меня думать о autoplot
.
Что я делаю не так, и как можно эффективно достичь того, чего я хочу?