R 函数:仅在第一次调用函数时打印警告

use*_*629 6 warnings r function

所以我正在尝试编写一个打印错误消息的函数,但仅在用户第一次调用该函数时。如果他们打开 R、加载库并调用该函数,它将打印一条警告消息。如果他们再次调用该函数,则不会打印此警告消息。如果他们关闭 R 并执行相同的过程,它将为第一次调用而不是在第二次调用时打印警告消息。我了解 R 中基本 warning() 函数的想法,但我在帮助文件中没有看到有关此类情况的任何文档。有谁知道可以与 warning() 函数一起使用的函数或条件可以解决这个问题?谢谢!我正在做一个项目,负责教授需要这个来处理某种版权问题,他希望它是这样的。

MrF*_*ick 8

执行此操作的一个包是quantmod. 当您使用该getSymbols功能时,它会警告您即将更改默认值。它使用options.

"getSymbols" <- function(Symbols=NULL,...) {
  if(getOption("getSymbols.warning4.0",TRUE)) {
    # transition message for 0.4-0 to 0.5-0
    message(paste(
            '    As of 0.4-0,',sQuote('getSymbols'),'uses env=parent.frame() and\n',
            'auto.assign=TRUE by default.\n\n',
            'This  behavior  will be  phased out in 0.5-0  when the call  will\n',
            'default to use auto.assign=FALSE. getOption("getSymbols.env") and \n',
            'getOptions("getSymbols.auto.assign") are now checked for alternate defaults\n\n',
            'This message is shown once per session and may be disabled by setting \n',
            'options("getSymbols.warning4.0"=FALSE). See ?getSymbol for more details'))
    options("getSymbols.warning4.0"=FALSE) 
  }
  #rest of function....
}
Run Code Online (Sandbox Code Playgroud)

因此,他们检查名为“getSymbols.warning4.0”的选项,如果未找到则默认为 TRUE。然后,如果未找到,它们会显示一条消息(您可能会显示一条警告),然后将该选项设置为 FALSE,以便下次不会显示该消息。


42-*_*42- 0

许多软件包都会弹出消息,因为有一种机制可以检测加载进一步调用的第二次努力,library或者require被默默地忽略。他们经常使用.onLoad(libname, pkgname). 看

?.onLoad
Run Code Online (Sandbox Code Playgroud)