首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R有没有像python中那样的assert语句?

R有没有像python中那样的assert语句?
EN

Stack Overflow用户
提问于 2010-02-10 08:34:57
回答 5查看 28.5K关注 0票数 103

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-10 08:38:20

stopifnot()

您可能还对用于单元测试的Runittestthat之类的包感兴趣。

票数 130
EN

Stack Overflow用户

发布于 2011-08-26 06:02:44

@Nick:

如果编写一个具有描述性名称的函数来测试将在程序中引发错误的条件,则可以控制错误消息。下面是一个例子:

代码语言:javascript
复制
Less_Than_8 = function(x) return(x < 8)

for (i in 1:10)
{
  print(i)
  stopifnot(Less_Than_8(i))
}

这将打印数字1到8,然后打印一条消息

代码语言:javascript
复制
Error: Less_Than_8(i) is not TRUE

如果将括号中的"i“替换为未通过测试的值,那会很好,但你会得到你所付出的代价。

如果你需要比这更花哨的东西,请参考Runit并按照Harlan的建议进行测试。

票数 12
EN

Stack Overflow用户

发布于 2018-06-01 12:34:50

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

代码语言:javascript
复制
if(something == FALSE){
   stop("error message to print")   
}

类似地,warning命令将打印一条警告(但继续执行代码)。

代码语言:javascript
复制
if(something == FALSE){
   warning("error message to print")   
}

它们都是由base R提供的,并且不需要运行任何包,也不需要在编写自己的函数时包含。我更喜欢这种方法来编写依赖较少的代码,并且这种语法在包开发中被广泛使用。然而,最近作为Hadley的"tidyverse“的一部分发布的带有assert_that函数的"assertthat”包也支持类似的功能。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2233584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档