R在python中有一个断言语句吗?

时间:2010-02-10 00:34:57

标签: r assert language-design assertions

一个语句,用于检查某些内容是否为真,如果没有,则打印出给定的错误消息并退出

3 个答案:

答案 0 :(得分:118)

stopifnot()

您可能也对Runittestthat这样的软件包感兴趣。

答案 1 :(得分:11)

@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所建议的。

答案 2 :(得分:2)

这可以使用stop命令来实现。此命令将暂停执行函数并打印错误消息。例如,我们可以测试变量something是否为false:

if(something == FALSE){
   stop("error message to print)
}

同样,warning命令将打印警告(但继续执行代码)。

if(something == FALSE){
   warning("error message to print)
}

这些都是由基础R提供的,不需要运行包或包含编写自己的函数。我更喜欢这种方法来编写具有较少依赖性的代码,并且这种语法被广泛用于包开发中。但是,具有assert_that函数的“assertthat”包支持类似的功能,该函数最近作为Hadley的“tidyverse”的一部分发布。