确定CRAN上的R包历史版本的数量

时间:2016-05-21 20:27:50

标签: r version cran

是否有可能确定CRAN上的软件包过去的版本数量?

2 个答案:

答案 0 :(得分:6)

这是使用 XML 包的一个。这只计算了归档版本(更确切地说,归档tar.gz文件的数量)。添加1以获取版本总数,包括当前版本。

nCRANArchived <- function(pkg) {
    link <- paste0("http://cran.r-project.org/src/contrib/Archive/", pkg)
    qry <- XML::getHTMLLinks(link, xpQuery = "//@href[contains(., 'tar.gz')]")
    length(qry)
}

nCRANArchived("data.table")
# [1] 33
nCRANArchived("ggplot2")
# [1] 28
nCRANArchived("MASS")
# [1] 40
nCRANArchived("retrosheet") ## shameless plug
# [1] 2

答案 1 :(得分:3)

这是一个简单的函数,它使用给定包的旧版本进入CRAN页面并计算它们。

num.versions = function(package) {

  require(rvest)
  require(stringr)

  # Get text of web page with package version info
  page = read_html(paste0("https://cran.r-project.org/src/contrib/Archive/", package, "/"))
  doc  = html_text(page)

  # Return number of versions (add 1 for current version)
  paste("Number of versions: ", 
        length(unlist(str_extract_all(doc, "tar\\.gz"))) + 1)

}

num.versions("ggplot2")
[1] "Number of versions:  29"

num.versions("data.table")
[1] "Number of versions:  34"

num.versions("distcomp")
[1] "Number of versions:  4"