Автоплот R работает при построчном запуске, но не при исходном сценарии R

Я наблюдаю очень странное поведение Р.

Следующий код работает, когда я ввожу его построчно в экземпляр R, запущенный с моего терминала. (ОС - Debian Linux.)

Однако это не работает, когда я пытаюсь запустить source("script.R").

Он также не работает из R Studio.

В частности, он не может производить графический вывод с autoplot. Запись в файл pdf не работает, и если я удалю pdf() и dev.off() линий, ни одно окно, содержащее рисунок, не открывается.

Вот копия моего сценария ...

      library(lubridate)
library(ggplot2)
library(matrixStats)
library(forecast)

df_input <- read.csv("postprocessed.csv")

x <- df_input$time
y <- df_input$value
df <- data.frame(x, y)

x <- df$x
y <- df$y

holtmodel <- holt(y)

pdf("autoplot.pdf")
autoplot(holtmodel)
dev.off()

И для удобства вот файл данных.

      "","time","value"
"1",1,2.61066016308988
"2",2,3.41246054742996
"3",3,3.8608767964033
"4",4,4.28686048552237
"5",5,4.4923132964825
"6",6,4.50557049744317
"7",7,4.50944447661246
"8",8,4.51097373134893
"9",9,4.48788748823809
"10",10,4.34603985656981
"11",11,4.28677073671406
"12",12,4.20065901625172
"13",13,4.02514194962519
"14",14,3.91360194972916
"15",15,3.85865748409081
"16",16,3.81318053258601
"17",17,3.70380706527433
"18",18,3.61552922363713
"19",19,3.61405310598722
"20",20,3.64591327503384
"21",21,3.70234435835577
"22",22,3.73503970503372
"23",23,3.81003078640584
"24",24,3.88201196162666
"25",25,3.89872518158949
"26",26,3.97432743542362
"27",27,4.2523675144599
"28",28,4.34654855854847
"29",29,4.49276038902684
"30",30,4.67830892029687
"31",31,4.91896819673664
"32",32,5.04350767355202
"33",33,5.09073406942046
"34",34,5.18510849382162
"35",35,5.18353176529036
"36",36,5.2210776270173
"37",37,5.22643491929207
"38",38,5.11137006553725
"39",39,5.01052467981257
"40",40,5.0361056705898
"41",41,5.18149486951409
"42",42,5.36334869132276
"43",43,5.43053620818444
"44",44,5.60001072279525

Довольно запутанный, потому что это кажется тривиальным сценарием!

1 ответ

Решение

измените его на:

      print(autoplot(holtmodel))

При пошаговом выполнении кода вы получаете неявное print(...)заявление в каждой строке кода. Когда вы используете source (), вы этого не делаете. ggplot (и другие!) используют print() для запуска построения графика (так что вы можете удобно построить график шаг за шагом, не дожидаясь мерцающих цифр)

Другие вопросы по тегам