2016-05-21 64 views

Odpowiedz

7

Oto jeden pomocą XML pakietu. To właśnie zlicza zarchiwizowane wersje (dokładniej, liczba zarchiwizowanych plików tar.gz). Dodaj 1, aby uzyskać całkowitą liczbę wersji, w tym bieżącą.

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 
4

Oto prosta funkcja, która przechodzi na stronę CRAN ze starszymi wersjami danej paczki i liczy je.

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"