Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在大括号内运行时,将abline添加到xts绘图时出错_R_Xts - Fatal编程技术网

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

R 在大括号内运行时,将abline添加到xts绘图时出错,r,xts,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

示例代码:

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 

大括号禁止自动打印,类似于
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()
}

大括号禁止自动打印,类似于
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()
}

谢谢这为我解决了这个问题。在调试这个问题时,我确实注意到了一些奇怪的行为:如果我绘制xts_2(存储为数据帧),我不会得到错误,但是如果我绘制xts_2(如上定义),我确实会得到错误。@rsoto74:这是因为对数据帧调用
plot()
会分派到
plot.default()
,而不是
plot.xts()
<禁用自动打印时,code>plot.default()不需要显式打印(如ggplot2、lattice等)。谢谢。这为我解决了这个问题。在调试这个问题时,我确实注意到了一些奇怪的行为:如果我绘制xts_2(存储为数据帧),我不会得到错误,但是如果我绘制xts_2(如上定义),我确实会得到错误。@rsoto74:这是因为对数据帧调用
plot()
会分派到
plot.default()
,而不是
plot.xts()
<禁用自动打印时,code>plot.default()不需要显式打印(如ggplot2、lattice等)。