在R 3.0.+中使用.Call()时出错

MAH*_*AHE 5 r

我正在尝试使用一种功能,使用逻辑曝光链接功能模拟鸟类的嵌套成功.

当我使用R 3.0.0或3.0.1中的上面的示例代码运行此函数时,我收到错误:

Error in .Call("logit_mu_eta", eta, PACKAGE = "stats") : 
  "logit_mu_eta" not available for .Call() for package "stats"
Run Code Online (Sandbox Code Playgroud)

但是,它在R 2.15.3中工作正常.

我希望这可以在更新版本的R中使用,因为我使用它们来进一步分析输出.如果有人有任何建议,解决方法或更正,我很乐意尝试.

Ben*_*ker 4

从技术上讲,这不是一个错误,因为该函数使用了一个位置现已更改的内部函数。我在https://rpubs.com/bbolker/logregexp上发布了一个工作示例...关键更改logit_mu_eta如下stats:::C_logit_mu_eta。当然,这对于未来内部的变化仍然很脆弱......

logexp <- function(exposure = 1)
{
    linkfun <- function(mu) qlogis(mu^(1/exposure))
    ## FIXME: is there some trick we can play here to allow
    ##   evaluation in the context of the 'data' argument?
    linkinv <- function(eta)  plogis(eta)^exposure
    mu.eta <- function(eta) exposure * plogis(eta)^(exposure-1) *
      .Call(stats:::C_logit_mu_eta, eta, PACKAGE = "stats")
    valideta <- function(eta) TRUE
    link <- paste("logexp(", deparse(substitute(exposure)), ")",
                   sep="")
    structure(list(linkfun = linkfun, linkinv = linkinv,
                   mu.eta = mu.eta, valideta = valideta, 
                   name = link),
              class = "link-glm")
}
Run Code Online (Sandbox Code Playgroud)