检查某些内容是否为真的语句,如果不是,则打印给定的错误消息并退出
发布于 2010-02-10 08:38:20
发布于 2011-08-26 06:02:44
@Nick:
如果编写一个具有描述性名称的函数来测试将在程序中引发错误的条件,则可以控制错误消息。下面是一个例子:
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“替换为未通过测试的值,那会很好,但你会得到你所付出的代价。
如果你需要比这更花哨的东西,请参考Runit并按照Harlan的建议进行测试。
发布于 2018-06-01 12:34:50
这可以使用stop
命令来实现。此命令将暂停函数的执行并打印错误消息。例如,我们可以测试变量something
是否为FALSE
if(something == FALSE){
stop("error message to print")
}
类似地,warning
命令将打印一条警告(但继续执行代码)。
if(something == FALSE){
warning("error message to print")
}
它们都是由base R提供的,并且不需要运行任何包,也不需要在编写自己的函数时包含。我更喜欢这种方法来编写依赖较少的代码,并且这种语法在包开发中被广泛使用。然而,最近作为Hadley的"tidyverse“的一部分发布的带有assert_that
函数的"assertthat”包也支持类似的功能。
https://stackoverflow.com/questions/2233584
复制相似问题