可以在R中使用旧版本的“ stats”软件包吗? [英] Is it possible to use an old version of 'stats' package in R?

查看:172
本文介绍了可以在R中使用旧版本的“ stats”软件包吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在R中使用旧版本的 stats 软件包?



函数 stats ::: regularize.values 会在最后一个R版本(> 3.5的任何版本)中引起警告和错误。
我不可能回到旧的R版本。
我不知道在代码中何处调用 regularize.values 函数,因为我使用了多个函数,其中一些函数来自不同的R包。
我尝试通过执行以下操作将调用更改为代码中的 regularize.values

  assignInNamespace( regularize.values,regularize.values.old.version,ns = stats)

但是我得到了错误:

  assignInNamespace( regularize.values,regularize中的错误.values.OV,:不能更改
'regularize.values'的锁定绑定

预先感谢您的建议!

解决方案

您可以尝试以下方法:



< pre class = lang-r prettyprint-override> assignInNamespace( regularize.values,regularize.values.OV,
ns = stats,envir = as.environment( package :stats))

但是,仅当错误不是由以下程序包抛出时才有效取决于已经加载的统计信息






因此,解决方案应该是:

  assignInNamespace( regularize.values,function(x,y,ties){
x<-xy.coords(x,y )
y<-x $ y
x<-x $ x
if(any(na<-is.na(x)| is.na(y))){
ok<-!na
x<-x [ok]
y<-y [ok]
}
nx<-长度(x)
if(!identical(tie, ordered)){
o<-order(x)
x<-x [o] $ b $通过<-y [o]
if(length(ux<-unique(x))< nx){
#if(missing(ties))
#warning(折叠为唯一的'x'值)
y<-as.vector(tapply(y,match(x,x),ties))
x<-ux
stopifnot(length( y)==长度(x))
}
}
list(x = x,y = y)
},ns = stats,envir = as.environment ( package:stats))


Is it possible to use an old version of the stats package in R?

The function stats:::regularize.values causes me warnings and errors in the last R version (any version >3.5). I have no possibility to get back to an old R version. I have no clue where the regularize.values function is called in my code since I use several functions, some of them from different R packages. I've tried to change the call to regularize.values in my code by doing

assignInNamespace("regularize.values", regularize.values.old.version, ns = "stats")

But I got the error:

Error in assignInNamespace("regularize.values", regularize.values.OV,  : 
  locked binding of ‘regularize.values’ cannot be changed

Thanks in advance for your suggestions!

解决方案

You can try this:

assignInNamespace("regularize.values", regularize.values.OV, 
                  ns="stats", envir = as.environment("package:stats"))

However, it will only work if the error is not thrown by a package that depends on the already-loaded stats


Therefore, a working solution should be:

assignInNamespace("regularize.values", function(x, y, ties) {
    x <- xy.coords(x, y)
    y <- x$y
    x <- x$x
    if(any(na <- is.na(x) | is.na(y))) {
    ok <- !na
    x <- x[ok]
    y <- y[ok]
    }
    nx <- length(x)
    if (!identical(ties, "ordered")) {
        o <- order(x)
    x <- x[o]
    y <- y[o]
    if (length(ux <- unique(x)) < nx) {
        # if (missing(ties))
        # warning("collapsing to unique 'x' values")
        y <- as.vector(tapply(y,match(x,x),ties))
        x <- ux
        stopifnot(length(y) == length(x))
    }
    }
    list(x=x, y=y)
}, ns="stats", envir = as.environment("package:stats"))

这篇关于可以在R中使用旧版本的“ stats”软件包吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆