我有这样的绘图功能:
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
?
答案 0 :(得分:0)
只需使用以下技术:
if (length(dev.list()!=0) {dev.off()}
这实际上也是一种检查许多其他函数的返回值的有效技术,例如,检查grep
是否发现了某些东西:
if(length(grep("me","I am not here"))==0) {print("not found")}
希望有帮助。