如何检查dev是否为空?

时间:2017-03-31 15:14:55

标签: r

我有这样的绘图功能:

f <- function(x,y){  

  for (i in 1:10){

    png(getwd(), height=1500, width=500)
    plot(x,y)
    dev.off()
  }
}

使用时一切都很好: f(2,3) 但如果我使用f(2,"a"),那么该函数在dev.off()

之前就会中断

我可以将on.exit(dev.off(), add=T)放在函数的begening上,但是在正常执行中我会dev.off()过多一次。

我认为解决方案是将这样的东西放到函数中:

 on.exit(if(dev != NULL) dev.off(), add=T)

但是如何检查dev != NULL

1 个答案:

答案 0 :(得分:0)

只需使用以下技术:

if (length(dev.list()!=0) {dev.off()}

这实际上也是一种检查许多其他函数的返回值的有效技术,例如,检查grep是否发现了某些东西:

if(length(grep("me","I am not here"))==0) {print("not found")}

希望有帮助。