【问题标题】:Warnings when restoring graphical parameters恢复图形参数时的警告
【发布时间】:2019-05-10 23:55:57
【问题描述】:

我正在编写我的第一个 R 包,目前正在开发一个函数,以使用一些特定的图形参数制作绘图。我希望用户定义的图形参数在绘图后得到恢复,但总是得到相同的警告消息:

opar <- par()
par(oma = c(5, 4, 0, 0) + 0.1, mar = c(0, 0, 1, 1) + 0.1)
par(opar)

警告信息:
1:在 par(opar) 中:不能设置图形参数“cin”
2:在par(opar)中:不能设置图形参数“cra”
3:在 par(opar) 中:不能设置图形参数“csi”
4:在par(opar)中:不能设置图形参数“cxy”
5: 在 par(opar) : 不能设置图形参数“din”
6: in par(opar) : 不能设置图形参数“page”

有没有更好的方法呢?我知道suppressWarnings() 函数,但是 1. 我不希望消息被隐藏 2. 如果函数被调用两次,则会出现警告消息:

> There were 12 warnings (use warnings() to see them)

【问题讨论】:

  • 使用opar &lt;- par(oma = ..., mar = ...),返回值是just你设置的旧值。 par() 本身包含所有内容,这有点过分了。

标签: r plot warnings par


【解决方案1】:

我的 cmets 中的 ... 只是一个 占位符,用于存放您打算放入其中的任何内容。 (我倾向于认为 cmets 中的很多代码很难阅读,所以我只是将其缩短了。)

字面意思:

opar <- par(oma = c(5, 4, 0, 0) + 0.1, mar = c(0, 0, 1, 1) + 0.1)
# other code that uses those settings
# when you are ready to reset to the original settings for oma and mar,
par(opar)

这在文档?par 中的一个类似示例中提供。

【讨论】:

    【解决方案2】:

    您可以通过在保存图形参数时提供no.readonly = TRUE 来绕过这些警告,如下所示:

    opar <- par(no.readonly = TRUE)
    par(oma = c(5, 4, 0, 0) + 0.1, mar = c(0, 0, 1, 1) + 0.1)
    par(opar)
    

    另外,您可以使用dev.off() 恢复默认的par 参数值。

    希望对你有帮助。

    【讨论】:

    • @r2evans 对该问题的评论是一种更好的方法,因为它只会恢复您更改的参数。在一个复杂的程序中,你的程序可能做的太多了。
    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多