R:未发现因safeUroot功能导致的copula问题。

R:未发现因safeUroot功能导致的copula问题。,r,R,我试图用一个我以前使用过很多次的脚本来拟合一个copula,但突然因为函数safeUroot而出错。它表示找不到该函数,即使它似乎已定义。谁能帮我解释一下我为什么会犯这个错误,以及我如何克服这个错误。这只出现在拟合Frank copula时——其他copula似乎也能起作用 > FrankFit = fitCopula(archmCopula("frank"), pseudo) Error in FUN(X[[i]], ...) : could not find function "saf

我试图用一个我以前使用过很多次的脚本来拟合一个copula,但突然因为函数safeUroot而出错。它表示找不到该函数,即使它似乎已定义。谁能帮我解释一下我为什么会犯这个错误,以及我如何克服这个错误。这只出现在拟合Frank copula时——其他copula似乎也能起作用

> FrankFit = fitCopula(archmCopula("frank"), pseudo)
Error in FUN(X[[i]], ...) : could not find function "safeUroot"
> safeUroot
function (f, interval, ..., lower = min(interval), upper = max(interval), 
    f.lower = f(lower, ...), f.upper = f(upper, ...), Sig = NULL, 
    check.conv = FALSE, tol = .Machine$double.eps^0.25, maxiter = 1000, 
    trace = 0) 
{
    if (is.null(Sig) && f.lower * f.upper > 0 || is.numeric(Sig) && 
        (Sig * f.lower > 0 || Sig * f.upper < 0)) {
        if (trace) 
            cat(sprintf("search in [%g,%g]%s", lower, upper, 
                if (trace >= 2) 
                  "\n"
                else " ... "))
        Delta <- function(u) 0.01 * pmax(1e-07, abs(u))
        if (is.null(Sig)) {
            delta <- Delta(c(lower, upper))
            while (isTRUE(f.lower * f.upper > 0) && any(iF <- is.finite(c(lower, 
                upper)))) {
                if (iF[1]) 
                  f.lower <- f(lower <- lower - delta[1])
                if (iF[2]) 
                  f.upper <- f(upper <- upper + delta[2])
                if (trace >= 2) 
                  cat(sprintf(" .. modified lower,upper: (%15g,%15g)\n", 
                    lower, upper))
                delta <- 2 * delta
            }
        }
        else {
            delta <- Delta(lower)
            while (isTRUE(Sig * f.lower > 0)) {
                f.lower <- f(lower <- lower - delta)
                if (trace) 
                  cat(sprintf(" .. modified lower: %g\n", lower))
                delta <- 2 * delta
            }
            delta <- Delta(upper)
            while (isTRUE(Sig * f.upper < 0)) {
                f.upper <- f(upper <- upper + delta)
                if (trace) 
                  cat(sprintf(" .. modified upper: %g\n", upper))
                delta <- 2 * delta
            }
        }
        if (trace && trace < 2) 
            cat(sprintf("extended to [%g, %g]\n", lower, upper))
    }
    if (!isTRUE(f.lower * f.upper <= 0)) 
        stop("did not succeed extending the interval endpoints for f(lower) * f(upper) <= 0")
    if (check.conv) {
        r <- tryCatch(uniroot(f, ..., lower = lower, upper = upper, 
            f.lower = f.lower, f.upper = f.upper, tol = tol, 
            maxiter = maxiter), warning = function(w) w)
        if (inherits(r, "warning")) 
            stop("convergence problem in zero finding: ", r$message)
        else r
    }
    else uniroot(f, ..., lower = lower, upper = upper, f.lower = f.lower, 
        f.upper = f.upper, tol = tol, maxiter = maxiter)
}
<bytecode: 0x000000004464ff18>
<environment: namespace:copula>
> 
FrankFit=fitCopula(archmCopula(“frank”),伪) FUN(X[[i]],…)中出错:找不到函数“safeUroot” >萨弗鲁奥 函数(f,间隔,…,下限=最小(间隔),上限=最大(间隔), f、 下=f(下,…),f.upper=f(上,…),Sig=NULL, check.conv=FALSE,tol=0.Machine$double.eps^0.25,maxiter=1000, 跟踪=0) { 如果(is.null(Sig)&&f.lower*f.upper>0 | | is.numeric(Sig)&& (Sig*f.lower>0 | | Sig*f.lower<0)){ 如果(跟踪) cat(sprintf(“搜索[%g,%g]%s”),下部、上部、, 如果(跟踪>=2) “\n” 否则“…”)
Delta您最近升级了R吗?如果是,您是否运行了
update.packages(checkbuild=TRUE)
?否,我最近没有升级R。此外,我能够适应其他连接函数(我假设使用相同的函数)。