是否可以在 R 中使用旧版本的 'stats' 包?
Is it possible to use an old version of 'stats' package in R?
是否可以在 R 中使用旧版本的 stats
包?
函数 stats:::regularize.values
导致我在最后一个 R 版本(任何版本 >3.5)中出现警告和错误。
我不可能回到旧的 R 版本。
我不知道在我的代码中调用 regularize.values
函数的位置,因为我使用了多个函数,其中一些函数来自不同的 R 包。
我试图通过
在我的代码中更改对 regularize.values
的调用
assignInNamespace("regularize.values", regularize.values.old.version, ns = "stats")
但是我得到了错误:
Error in assignInNamespace("regularize.values", regularize.values.OV, :
locked binding of ‘regularize.values’ cannot be changed
提前感谢您的建议!
你可以试试这个:
assignInNamespace("regularize.values", regularize.values.OV,
ns="stats", envir = as.environment("package:stats"))
但是,只有当错误不是由依赖于已加载 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 <- 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
包?
函数 stats:::regularize.values
导致我在最后一个 R 版本(任何版本 >3.5)中出现警告和错误。
我不可能回到旧的 R 版本。
我不知道在我的代码中调用 regularize.values
函数的位置,因为我使用了多个函数,其中一些函数来自不同的 R 包。
我试图通过
regularize.values
的调用
assignInNamespace("regularize.values", regularize.values.old.version, ns = "stats")
但是我得到了错误:
Error in assignInNamespace("regularize.values", regularize.values.OV, :
locked binding of ‘regularize.values’ cannot be changed
提前感谢您的建议!
你可以试试这个:
assignInNamespace("regularize.values", regularize.values.OV,
ns="stats", envir = as.environment("package:stats"))
但是,只有当错误不是由依赖于已加载 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 <- 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"))