Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 获得第1版的软件包';s出版日期_R_Packages_Release_Versions - Fatal编程技术网

R 获得第1版的软件包';s出版日期

R 获得第1版的软件包';s出版日期,r,packages,release,versions,R,Packages,Release,Versions,R包的文件仅包括提交日期。 版本编号并非所有软件包都遵循通用模式。 因此,很难一目了然地知道包装是旧的还是新的。有时,您需要在两个具有类似功能的包之间做出决定,了解包的使用期限可以指导您做出决定 我的第一个方法是绘制每年的下载量:。此方法还提供了包的相对流行度/使用率。但是,这需要大量内存和时间才能继续。因此,我宁愿有一个更快的方式来研究一个包的历史 有没有一种快速的方法可以知道或可视化某个特定软件包的第一个版本的发布日期,甚至可以同时比较几个软件包? 其目的是促进R中所有可用包的心理映射,特别

R包的文件仅包括提交日期。 版本编号并非所有软件包都遵循通用模式。 因此,很难一目了然地知道包装是旧的还是新的。有时,您需要在两个具有类似功能的包之间做出决定,了解包的使用期限可以指导您做出决定

我的第一个方法是绘制每年的下载量:。此方法还提供了包的相对流行度/使用率。但是,这需要大量内存和时间才能继续。因此,我宁愿有一个更快的方式来研究一个包的历史

有没有一种快速的方法可以知道或可视化某个特定软件包的第一个版本的发布日期,甚至可以同时比较几个软件包?


其目的是促进R中所有可用包的心理映射,特别是对于新来者。了解和管理软件包可能是人们放弃使用R的主要挑战。

正如安德鲁·泰勒所建议的,包含所有以前的版本,并注明日期

只是为了好玩:

## 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))

我不会根据年龄来判断一个包裹。这里有几个非常好的非常老的r程序员。有趣的是,
packageDescription
没有任何类型的
首次发布
,但我认为你低估了1)旧的软件包,如果它们仍然被谈论,那么它经受了时间的考验,2)维护良好的软件包。也就是说,我想通过
packageDescription(pkg)$
Date/Publication``了解最新更新的软件包。您可以搜索cran档案。每个软件包的每个版本都有发布日期。这不在R中(至少通过快速搜索,我还没有找到一种让R列出所有以前版本的方法)。但这很快。我不歧视旧的软件包。正如罗尔和安德鲁所说,他们经受住了时间的考验。有时候,这正是你想要的一个经过测试的、稳定的软件包。但有时新的软件包基于更新的技术。例如,ggplot2、ggplot、gvis…,虽然基本绘图功能很好,但现在有了新语法的更好的替代方案。感谢您的评论和支持。当然,我读了这些文件,这是我大部分时间都在做的事情。但有一块拼图不见了。它们在时间上的关系。其目的是促进R中所有可用包的心理映射。但我似乎是唯一一个这样想的人。我拒绝了按包日期编辑订单,但添加了一个
dplyr::arrange
解决方案。我不清楚你为什么需要以这种方式排序结果?在数据帧中要求对行进行特定的排序相对来说是不习惯的……只需稍微增加按日期排序,就可以在某些特殊情况下使
numver
遵循正确的模式。如果你看一下,版本0.5在0.5.7之后。因此,对于某些软件包,绘图将经历一个奇怪的峰值,这仅仅是由于
numver
的创建方式造成的。再次感谢您的代码和关于本·博克的
arrange
@Ben Bolker的提示!好的,这很有意义。这是一个很好的方法来确定在特定日期在CRAN上的软件包的确切版本。
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()