R函数不会按预期引发错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R函数不会按预期引发错误相关的知识,希望对你有一定的参考价值。

问题的结尾是脚本(加上github)。 GitHub回购是here,可以安装

install.packages("devtools")
devtools::install_github("ArtieLadie/RanglaPunjab")

MergePalette(name,name2)有两个名字。如果person只传递一个名字,我想要执行以下操作然后退出该函数,

Enter 2 valid palettes. Run ListPalette() for list of palettes.

不幸的是,当我执行MergePalette("Teej")时,我明白了

Error in MergePalette("Teej") : argument "name2" is missing, with no default

如何解决这个问题

MergePalette <- function(name,name2){

  pal <-  RanglaPunjab(name)

  if (is.null(name2)){
    stop("Enter 2 valid palettes. Run ListPalette() for list of palettes.")
 }
  pal2 <-  RanglaPunjab(name2)

  new_pal <-unique(c(pal,pal2))

  new_pal
}
答案

两种方法:

  1. 首选:检查缺失情况: MergePalette <- function(name,name2){ if (missing(name2)) { stop(...) }
  2. 在形式中定义NULL的默认值,该函数有效: MergePalette <- function(name,name2=NULL){ if (is.null(name2)) { stop(...) } 如果用户(意外地)向name2提供了一个本身为NULL的参数,则错误消息将会令人困惑。正如@Moody_Mudskipper所指出的那样,通过将默认值设置为NULL,您隐式告诉用户该参数是可选的和/或NULL是可以的。有了这个,我建议这个选项不适合这个问题/用法。

以上是关于R函数不会按预期引发错误的主要内容,如果未能解决你的问题,请参考以下文章

IE会引发预期的冒号错误,适用于Chrome吗?具有对象文字和函数的对象数组

AngularJS / rxjs:订阅时观察不到错误

scala强制转换不兼容类型而不会引发错误

为啥代码片段在 matplotlib 2.0.2 上运行良好,但在 matplotlib 2.1.0 上引发错误

具有错误输入默认值的构造函数在 GCC 7 中不会引发错误

防止导航到同一个片段