Answers:
@缺口:
如果编写带有描述性名称的函数来测试将在程序中引发错误的条件,则可以控制错误消息。这是一个例子:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
这将打印数字1至8,然后显示一条消息,提示
Error: Less_Than_8(i) is not TRUE
如果将括号中的“ i”替换为未通过测试的值,那很不错,但是您得到的是所支付的费用。
如果您需要比这更高级的工具,请按照Harlan的建议研究Runit并进行测试。
stopifnot()
。
这可以通过stop
命令来实现。此命令将停止执行功能并显示错误消息。例如,我们可以测试变量something
是否为FALSE
:
if(something == FALSE){
stop("error message to print")
}
同样,该warning
命令将打印警告(但继续执行代码)。
if(something == FALSE){
warning("error message to print")
}
这些都是由base R提供的,不需要运行任何程序包,也不需要包含编写您自己的函数的程序包。我更喜欢这种方法来编写具有较少依赖关系的代码,并且这种语法在程序包开发中被广泛使用。但是,“ assertthat”程序包支持类似的功能,而该assert_that
功能最近已作为Hadley的“ tidyverse”的一部分发布。