繁体   English   中英

如果函数在函数列表中,如何签入 R?

[英]How can I check in R if a function is in a list of functions?

algos <- c(bnlearn::hc, bnlearn::tabu)
bnlearn::hc %in% algos

匹配错误(x,表,nomatch = 0L):“匹配”需要向量参数

我已经尝试了上面的错误,但出现了以下错误。 我该如何解决这个问题?

您可以使用identical的函数来检查函数是否相等。

要检查列表成员资格,您需要手动将其应用于列表:

any(vapply(algos, identical, logical(1L), bnlearn::hc))

您当然可以将其包装到函数/运算符中:

`%fin%` = function (fun, funs) {
    any(vapply(funs, identical, logical(1L), match.fun(fun)))
}
bnlearn::hc %fin% algos

如果您首先将列表构建为命名列表:

algos <- c("bnlearn::hc" = bnlearn::hc, "bnlearn::tabu" = bnlearn::tabu)

你可以简单地做:

"bnlearn::hc" %in% names(algos)

TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM