获取包装第一版的发布日期

时间:2015-03-27 17:35:00

标签: r packages release versions

R包的文档仅包含last update/publication的日期。 版本编号不遵循所有包的通用模式。 因此,一眼就知道包装是旧的还是新的是很困难的。有时您需要在具有类似功能的两个包之间做出决定,并且知道包的年龄可以指导决策。

我的第一个方法是每年绘制下载量:By traking CRAN downloads。该方法还提供了包的相对流行度/用法。但是,这需要大量的内存和时间来进行。因此,我宁愿用更快的方式来查看一个包的历史。

是否可以通过快速方式了解或虚拟化第一个版本的某个特定软件包的发布日期,甚至可以同时比较多个软件包?

目的是促进R中所有可用包的心理映射,尤其是对于新手。了解包并管理它们可能是人们放弃R的主要挑战。

2 个答案:

答案 0 :(得分:3)

只是为了好玩:

## not all repositories have the same archive structure!
archinfo <- function(pkgname,repos="http://www.cran.r-project.org") {
    pkg.url <- paste(contrib.url(repos),"Archive",pkgname,sep="/")
    r <- readLines(pkg.url)
    ## lame scraping code
    r2 <- gsub("<[^>]+>"," ",r)   ## drop HTML tags
    r2 <- r2[-(1:grep("Parent Directory",r2))]  ## drop header
    r2 <- r2[grep(pkgname,r2)]                  ## drop footer
    strip.white <- function(x) gsub("(^ +|  +$)","",x)
    r2 <- strip.white(gsub("&nbsp;","",r2))     ## more cleaning
    r3 <- do.call(rbind,strsplit(r2," +"))      ## pull out data frame
    data.frame(
        pkgvec=gsub(paste0("(",pkgname,"_|\\.tar\\.gz)"),"",r3[,1]),
        pkgdate=as.Date(r3[,2],format="%d-%b-%Y"),
        ## assumes English locale for month abbreviations
        size=r3[,4])
}
AERinfo <- archinfo("AER")
lme4info <- archinfo("lme4")
comb <- rbind(data.frame(pkg="AER",AERinfo),
              data.frame(pkg="lme4",lme4info))

我们无法直接比较包裹数量,因为每个人都使用不同的编号方案......

library(dplyr) ## overkill
comb2 <- comb %>% group_by(pkg) %>% mutate(numver=seq(n()))

如果您想按包裹日期安排:

comb2 <- arrange(comb2,pkg,pkgdate)

漂亮的照片......

library(ggplot2); theme_set(theme_bw())
ggplot(comb2,aes(x=pkgdate,y=numver,colour=pkg))+geom_line()

enter image description here

答案 1 :(得分:2)

正如Andrew Taylor建议的那样,CRAN Archives包含所有以前的版本,并指出日期。