这个话题来自于一个同学跟我讨论的一个问题,问题如下:
他在导出图形的时候出现了报错(直接画图是没有问题的):
我们来逐条分析一下,这个报错是想表达什么?以及什么情况下可能出现此报错
- dev.off()函数的功能是关闭指定的(默认是当前的)装置,报的错误是不能关闭1号装置,这里也就暗示,当前装置是1号装置,那什么是一号装置呢?原本应该是什么装置呢?
- 1号装置其实是“null device”,它相当于一个占位符。R中,每次只能有一个装置被激活,一旦有其他装置(除了1号装置之外的装置)被打开,那1号装置就不可能被激活。按照报错,当前装置是1号装置,也就是其他装置没有被打开。(可以在不打开图形设备(不要tiff()语句)的情况下直接试一下dev.off()命令,也会发现报此错,是同样的道理)
- 那应该打开的是什么装置呢?我用我的电脑尝试了一下,打开的装置名应该为tiff,此处为2号装置
tiff() dev.cur() tiff 2
参考来源:https://www.math.mun.ca/~jcloredoosti/R/library/grDevices/html/dev.html
综上,是因为tiff()没有成功打开图形装置
在网上搜索的解决办法:(https://9to5answer.com/error-in-dev-off-cannot-shut-down-device-1-the-null-device)
把
dev.off()
改成
while (!is.null(dev.list())) dev.off()