我正在尝试做一些相对简单的事情。我正在尝试使用 lm() 函数提出回归函数并获得诊断信息。
现在 lm() 函数的输入是一个具有 formula 类的输入。

如何设计一个函数来测试输入是否为 formula ,如果不是,则停止并抛出错误?

最佳答案

您可以使用 class 函数来检查对象是否为公式

> fo <- y ~ x1*x2   # this is formula class
> stopifnot(class(fo)=="formula")
>
> fo <- 1
> stopifnot(class(fo)=="formula")  # this not a formula
Error: class(fo) == "formula" is not TRUE

你也可以定义一个函数来测试一个对象是否是一个公式
> is.formula <- function(x){
    class(x)=="formula"
  }
>
> is.formula( y ~ x1*x2)
[1] TRUE
> is.formula(2)
[1] FALSE

如果您想编写自定义错误消息,您可以按照以下步骤进行(感谢 nico)
formula.test <- function(x){
    ifelse( class(x)=="formula",
          "This is a formula, you can go ahead!",
          stop("This is not a formula, we must stop here."))
}

formula.test(y ~ x1*x2)  # this is OK
formula.test("a")        # stops execution and throws an error
formula.test(1)          # stops execution and throws an error

关于r - R中的公式输入错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22569919/

10-12 18:09