简体   繁体   English

R 自动绘图在逐行运行时有效,但在源化 R 脚本时无效

[英]R autoplot works when running line-by-line but not when source-ing R script

I'm observing a very strange behaviour with R.我观察到 R 的一个非常奇怪的行为。

The following code works when I type it in line-by-line into an instance of R run from my terminal.当我将以下代码逐行输入到从我的终端运行的 R 实例中时,以下代码将起作用。 (OS is Debian Linux.) (操作系统为 Debian Linux。)

However it does not work when I try and run source("script.R") .但是,当我尝试运行source("script.R")时它不起作用。

It also does not work from within R Studio.它在 R Studio 中也不起作用。

Specifically, it fails to produce graphical output with autoplot .具体来说,它无法使用 autoplot 生成图形autoplot Writing to pdf file does not work, and if I remove the pdf() and dev.off() lines, no window containing the figure is opened.写入 pdf 文件不起作用,如果我删除pdf()dev.off()行,则不会打开包含该图的 window。

Here's a copy of my script...这是我的脚本的副本...

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

And for convenience, here's a datafile.为方便起见,这里有一个数据文件。

"","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

Pretty confused because it seems like a trivial script!很困惑,因为它看起来像一个微不足道的脚本!

change it to:将其更改为:

print(autoplot(holtmodel))

When you step through code, you get an implicit print(...) statement on each code line.当您单步执行代码时,您会在每个代码行上获得一个隐式print(...)语句。 When you source() you don't.当你 source() 你没有。 ggplot (and others!) use print() to trigger their ploting (so that you can conveniently build up a plot step by step without having to wait for flickering figures) ggplot(和其他人!)使用 print() 来触发他们的绘图(这样您就可以方便地逐步构建 plot 而无需等待闪烁的数字)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM