gpt4 book ai didi

r - 如何返回到以前版本的 CRAN 包?

转载 作者:行者123 更新时间:2023-12-04 11:46:27 26 4
gpt4 key购买 nike

我在看 install.packages我没有看到任何指定特定版本的选项。有办法吗?我希望能找到类似 install.packages(c('xts'),version='0.9.3') 的东西

我找到了这个答案:https://stackoverflow.com/a/12679452/841830
但是,在安装 devtools 后,我做了:

library(devtools)
install_version('xts','0.9.3')

它给出了这个错误信息:
Error in url(sprintf("%s/src/contrib/Archive.rds", repos), "rb") : 
cannot open the connection
In addition: Warning message:
In url(sprintf("%s/src/contrib/Archive.rds", repos), "rb") :
cannot open: HTTP status was '404 Not Found'
3: url(sprintf("%s/src/contrib/Archive.rds", repos), "rb")
2: gzcon(url(sprintf("%s/src/contrib/Archive.rds", repos), "rb"))
1: install_version("xts", "0.9.3")

(使用“0.9-3”,连字符而不是点,给出相同的错误。)

背景 :我在 xts rollapply 函数调用中有一个回归,因为从 0.9.3 升级到 0.9.4。然而,当我查看在线 svn 存储库时,自从我知道它上次工作以来似乎没有任何变化。所以我想安装0.9.3(然后是0.9.2等)来确认问题是什么时候引入的。

最佳答案

现在函数install_version当前的 CRAN 文件似乎有几个问题,您已经确定了前两个:

  • 0.9-3 中的连字符由一个点代替。
  • 文件 src/contrib/Archive.rds无法找到(它移至 CRAN 上的 src/contrib/Meta/archive.rds)。
  • archive.rds 的格式明显改变了。

  • 我发送了一个修复这些问题的拉取请求,所以它应该很快在 devtools 中修复。如果您想使用 install_version同时,加载库 devtools但使用这个稍微编辑的功能:
    install_version <- function(package, version = NULL, repos = getOption("repos"), type = getOption("pkgType"), ...) {

    contriburl <- contrib.url(repos, type)
    available <- available.packages(contriburl)

    if (package %in% row.names(available)) {
    current.version <- available[package, 'Version']
    if (is.null(version) || version == current.version) {
    return(install.packages(package, repos = repos, contriburl = contriburl,
    type = type, ...))
    }
    }

    con <- gzcon(url(sprintf("%s/src/contrib/Meta/archive.rds", repos), "rb"))
    on.exit(close(con))
    archive <- readRDS(con)

    info <- archive[[package]]
    if (is.null(info)) {
    stop(sprintf("couldn't find package '%s'", package))
    }

    if (is.null(version)) {
    # Grab the latest one: only happens if pulled from CRAN
    package.path <- info[length(info)]
    } else {
    package.path <- paste(package, "/", package, "_", version, ".tar.gz",
    sep = "")
    if (!(package.path %in% row.names(info))) {
    stop(sprintf("version '%s' is invalid for package '%s'", version,
    package))
    }
    }

    url <- paste(repos, "/src/contrib/Archive/", package.path, sep = "")
    install_url(url, ...)
    }

    关于r - 如何返回到以前版本的 CRAN 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016671/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com