代码之家  ›  专栏  ›  技术社区  ›  Dan

r是否像python中那样有assert语句?

  •  91
  • Dan  · 技术社区  · 16 年前

    一种语句,用于检查某事物是否为真,如果不是,则打印给定的错误消息并退出

    3 回复  |  直到 7 年前
        1
  •  115
  •   cbare ninjagecko    7 年前

    stopifnot()

    您可能还对以下软件包感兴趣 Runit testthat 用于单元测试。

        2
  •  11
  •   CCC    14 年前

    @ 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和testthat,就像harlan建议的那样。

        3
  •  1
  •   Tom Kelly    7 年前

    这可以通过 stop 命令。此命令将停止函数的执行并打印错误消息。例如,我们可以测试 something 是假的:

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

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

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

    它们都是由base r提供的,不需要运行包或在编写自己的函数时包含包。我更喜欢这种方法来编写依赖性更少的代码,这种语法在包开发中被广泛使用。但是,“asserttha”包也支持类似的功能。 assert_that 最近作为hadley的“tidyverse”的一部分发布的函数。

    推荐文章