给定一个虚拟的用户定义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
参数执行相同的操作,但我希望确保它属于逻辑类,并且仅包含选项TRUE
或FALSE
。如何在R
中实现这一点,以便在我提供函数foo('nwk', 'bar')
时,我发现arg
参数rooted
应该是合乎逻辑的错误?
答案 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)
一旦上次呼叫被击中,这将产生错误。