【发布时间】:2016-12-29 10:19:06
【问题描述】:
问题:我正在尝试为 R 包编写脚本,为了对我的用户尽心尽责,我在绘制任何内容之前保存了他们的图形参数,以便我可以在脚本的结尾。我知道在执行此操作时收到警告消息是正常的,因为其中一些无法重置,但我使用suppressWarnings() 试图避免该输出到达用户。这是一个简化的示例:
Plot4Things <- function(){
# suppress warnings when saving parameters
suppressWarnings(opar <- par())
# adjust parameter
par(mfrow = c(2,2))
plot(seq(1,20), pch = 16)
plot(seq(1,20), pch = 17)
plot(seq(1,20), pch = 18)
plot(seq(1,20), pch = 19)
# suppress warnings while restoring original parameters
suppressWarnings(par(opar))
}
第一次调用此函数不会给我任何警告消息或控制台输出。只是一个漂亮的图表,我验证mfrow 选项是否已使用par() 正确重置。但是,以后每次调用Plot4Things() 函数时,都会得到以下输出:
Plot4Things()
Plot4Things()
# There were 12 warnings (use warnings() to see them)
警告是关于无法重置的图形参数的无害的事情(这很好,因为我不想这样做)。我完全不依赖这种保存/重置参数的方法,那么有没有更好的方法来做到这一点?有没有办法让警告消息停止延迟出现?在内心深处,我真的只是想了解这种行为,以便将来改进我的写作。
提前致谢!
【问题讨论】:
-
一般情况下,将重置放入
on.exit。这可以保证即使您的函数中存在导致提前中止的错误,它也会运行。这应该为 all 清理完成。