我正在尝试做一些相对简单的事情。我正在尝试使用 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/