在大括号内运行时将abline添加到xts图时出错

时间:2017-11-20 17:28:31

标签: r xts

示例代码:

df_2=as.data.frame(c(1:10))
rownames(df_2)=Sys.Date()+c(1:10)
xts_2=as.xts(df_2)
vline=.index(xts_2)[4]

{
  png(filename = paste0(Sys.Date(),'-test',".png"), width = 800, height = 600)
  plot(xts_2[,1])
  print(dev.cur())
  abline(v=vline, col="red")
  dev.off()
}

如果我从png ... dev.off()中选择行并运行,我会得到所需的输出文件。

但是如果我选择了大括号来运行序列(例如,如果满足条件就运行),我会收到错误:

Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : 
  plot.new has not been called yet

两种情况下print(dev.cur())行的结果是:

png 
  2 

1 个答案:

答案 0 :(得分:0)

大括号禁止自动打印,类似于plot()循环或函数中的for调用。你可以通过明确打印图来解决这个问题。

{
  png(filename = paste0(Sys.Date(),'-test',".png"), width = 800, height = 600)
  print(plot(xts_2[,1]))
  print(dev.cur())
  abline(v=vline, col="red")
  dev.off()
}