Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重置par()时在R脚本中使用suppressWarnings的延迟警告消息_R_Plot - Fatal编程技术网

重置par()时在R脚本中使用suppressWarnings的延迟警告消息

重置par()时在R脚本中使用suppressWarnings的延迟警告消息,r,plot,R,Plot,问题:我正在尝试为R软件包编写脚本,为了对用户负责,我在打印任何内容之前保存了他们的图形参数,以便在脚本结束时重置它们。我知道在执行此操作时收到警告消息是正常的,因为其中一些消息无法重置,但我使用suppressWarnings()尝试避免用户收到该输出。下面是一个简化的示例: Plot4Things <- function(){ # suppress warnings when saving parameters suppressWarnings(opar <-

问题:我正在尝试为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))
}
警告是关于无法重置的图形参数的无害内容(这很好,因为我不想重置)。我完全不喜欢这种保存/重置参数的方法,所以有更好的方法吗?有没有办法让警告信息停止延迟出现?在内心深处,我真的只想了解这种行为,这样我就能在将来提高我的写作水平


提前谢谢

要设置参数并保存旧参数以进行恢复,请使用
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))