R:强制内部方法使用另一个包中的函数

时间:2015-12-03 03:20:54

标签: r

我正在编写一个在我的一个函数中使用flexmix getModel的包。

问题在于它使用哪种BIC / AIC功能(来自统计数据包)。

> getMethod("getModel","stepFlexmix")
Method Definition:

function (object, ...) 
{
    .local <- function (object, which = "BIC") 
    {
        if (which == "AIC") 
            which <- which.min(sapply(object@models, function(x) AIC(x)))
        if (which == "BIC") 
            which <- which.min(sapply(object@models, function(x) BIC(x)))
        if (which == "ICL") 
            which <- which.min(sapply(object@models, function(x) ICL(x)))
        object@models[[which]]
    }
    .local(object, ...)
}
<environment: namespace:flexmix>

Signatures:
        object       
target  "stepFlexmix"
defined "stepFlexmix"

在另一个函数中,我使用了flowMerge包中的BIC,在头文件中我有:

@' importFrom flowMerge BIC

问题是getModel函数现在使用flowMerge中的BIC而不是stats。我怀疑它是在命名空间的定义中?我不太确定。

因为它是内部调用的,所以我没有选择

stats::BIC

在包装内是否有一种优雅的方式?如果我只是自己运行函数,这一切都很好用。

1 个答案:

答案 0 :(得分:0)

我通过

解决了这个问题
  1. 删除@' importFrom flowMerge BIC,从而删除NAMESPACE
  2. 中的来电
  3. 致电flowMerge::BIC
  4. 这会使getMethod使用BIC中的stats。这是一种解决方法,可能不是最好的方式。