重置par()时在R脚本中使用suppressWarnings的延迟警告消息
问题:我正在尝试为R软件包编写脚本,为了对用户负责,我在打印任何内容之前保存了他们的图形参数,以便在脚本结束时重置它们。我知道在执行此操作时收到警告消息是正常的,因为其中一些消息无法重置,但我使用重置par()时在R脚本中使用suppressWarnings的延迟警告消息,r,plot,R,Plot,问题:我正在尝试为R软件包编写脚本,为了对用户负责,我在打印任何内容之前保存了他们的图形参数,以便在脚本结束时重置它们。我知道在执行此操作时收到警告消息是正常的,因为其中一些消息无法重置,但我使用suppressWarnings()尝试避免用户收到该输出。下面是一个简化的示例: Plot4Things <- function(){ # suppress warnings when saving parameters suppressWarnings(opar <-
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))
}
警告是关于无法重置的图形参数的无害内容(这很好,因为我不想重置)。我完全不喜欢这种保存/重置参数的方法,所以有更好的方法吗?有没有办法让警告信息停止延迟出现?在内心深处,我真的只想了解这种行为,这样我就能在将来提高我的写作水平
提前谢谢 要设置参数并保存旧参数以进行恢复,请使用
no.readonly
:
opar <- par(no.readonly = TRUE)
作为警告,文档的示例警告,关于使用no.readonly
……这不是一般的良好做法
…但这并不能解释为什么。因此,我将忽略这一警告。作为一般规则,将重置置于
on.exit
中。这保证了即使函数中存在导致提前中止的错误,它也会运行。所有清理都应该这样做。感谢您的帮助-我已经完成并更改了所有脚本,不再有问题(仍然对suppressWarnings()
的行为感到困惑)
opar <- par(no.readonly = TRUE)
opar <- par(no.readonly = TRUE)
on.exit(par(opar))