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等)。