R 有许多用于测试对象类型的助手,例如
is.character(x)
有(奇怪地缺失的)
is.formula(x)
的等价物吗?
(PS:我发现至少有一个包已经实现了这个外部基础 R)
根据我的评论,你可以这样做:
is.formula <- function(x){
inherits(x,"formula")
}
您可以使用
rlang文档中的
rlang::is_formula()
或 rlang::is_bare_formula()
:
测试is_formula()
是否是对x
的调用。~
另外测试is_bare_formula()
不继承自“公式”以外的任何内容。x
如果我们想纯粹基于调用进行测试,我们可以这样做:
a_formula <- ~foo
not_a_formula <- "foo"
class(not_a_formula) <- "formula"
inherits(a_formula, "formula")
#> [1] TRUE
inherits(not_a_formula, "formula")
#> [1] TRUE
is.formula <- function(x) is.call(x) && x[[1]] == quote(`~`)
is.formula(a_formula)
#> [1] TRUE
is.formula(not_a_formula)
#> [1] FALSE
由 reprex 包于 2019 年 11 月 10 日创建(v0.3.0)