4

我正在查看,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”,连字符而不是点,会产生同样的错误。)

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

4

2 回答 2

4

现在,该功能install_version似乎与当前的 CRAN 存档有几个问题,您已经确定了前两个:

  1. 中的连字符0.9-3替换为点。
  2. src/contrib/Archive.rds找不到该文件(它移至src/contrib/Meta/archive.rdsCRAN 上)。
  3. 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, ...)
}
于 2013-07-11T14:48:37.187 回答
1

如果一切都失败了,您可以直接从 CRAN 获取源代码:http: //cran.r-project.org/src/contrib/Archive/xts/xts_0.9-3.tar.gz

于 2013-06-10T04:25:23.757 回答