R:测试用户定义的函数参数是否为“逻辑”类

时间:2018-04-26 05:38:04

标签: r

给定一个虚拟的用户定义R函数foo

foo <- function(tree_format, rooted=TRUE){
    match.arg(tree_format, choices = c('nwk', 'nxs'))    

}

如果我尝试向函数提供错误的选择,如下所示,我收到一个有意义的错误:

foo('bar')
 Show Traceback

 Rerun with Debug
 Error in match.arg(tree_format, choices = c("nwk", "nxs")) : 
  'arg' should be one of “nwk”, “nxs”

我想对rooted参数执行相同的操作,但我希望确保它属于逻辑类,并且仅包含选项TRUEFALSE。如何在R中实现这一点,以便在我提供函数foo('nwk', 'bar')时,我发现arg参数rooted应该是合乎逻辑的错误?

1 个答案:

答案 0 :(得分:2)

您可以使用stopifnot()is.logical()

foo <- function(a, root = TRUE) {
  stopifnot(is.logical(root), !is.na(root))
  print(a)
}

foo("test212")
foo("test123", FALSE)
foo("test", 123)

一旦上次呼叫被击中,这将产生错误。