了解RAN首次在CRAN上发布的时间?

问题描述 投票:3回答:4

我怎样才能知道在CRAN上首次发布R包的时间? This问题是相关的,但没有回答我的问题。我不相信citation功能也有帮助。

r
4个回答
3
投票

使用crandb API https://github.com/metacran/crandb

URL调用https://crandb.r-pkg.org/MASS/all

在CLI上使用jq

curl https://crandb.r-pkg.org/MASS/all | jq '[.versions[]][0].Date'
#> "2009-05-06"

或者在R中

library(jqr)
curl::curl_download( 'https://crandb.r-pkg.org/MASS/all', (f <- tempfile()))
jq(paste0(readLines(f), collapse=""), "[.versions[]][0].Date")
#> "2009-05-06"

或者在R与jsonlite

jsonlite::fromJSON("https://crandb.r-pkg.org/MASS/all")$versions[[1]]$Date
#> [1] "2009-05-06"

1
投票

与您的链接类似,您可以使用此:

library(rvest)
library(dplyr)
nCRANArchived <- function(pkg) {
 link <- read_html(paste0("https://cran.r-project.org/src/contrib/Archive/", pkg))
 link %>%
  html_node('table') %>%
  html_table() %>%
  select(`Last modified`) %>%
  filter(`Last modified` != '') %>%
  head(1)
}


nCRANArchived('dplyr')
#     Last modified
#1 2014-01-29 21:24
nCRANArchived('data.table')
#     Last modified
#1 2006-04-15 00:03
nCRANArchived('tableHTML')
#     Last modified
#1 2016-06-26 09:30

1
投票

我更像是一个data.table用户,所以这里是rvest解决方案,有一点点data.tableanytime

R> url <- "https://cran.r-project.org/src/contrib/Archive/Rcpp"
R> dat <- setDT(html_table(html_node(read_html(url), "table")))
R> dat[, Date := anytime(`Last modified`)][ !is.na(Date), .(Name, Date)][1:10,]
                 Name                Date
 1: Rcpp_0.6.0.tar.gz 2008-11-06 19:15:00
 2: Rcpp_0.6.1.tar.gz 2008-11-30 20:19:00
 3: Rcpp_0.6.2.tar.gz 2008-12-04 09:19:00
 4: Rcpp_0.6.3.tar.gz 2009-01-11 20:11:00
 5: Rcpp_0.6.4.tar.gz 2009-03-02 09:54:00
 6: Rcpp_0.6.5.tar.gz 2009-04-03 11:41:00
 7: Rcpp_0.6.6.tar.gz 2009-08-04 16:22:00
 8: Rcpp_0.6.7.tar.gz 2009-11-08 19:23:00
 9: Rcpp_0.6.8.tar.gz 2009-11-10 11:15:00
10: Rcpp_0.7.0.tar.gz 2009-12-20 10:58:00
R> 

到目前为止Date是一个POSIXct所以你也可以随意计算,排序,差异,聚合......


1
投票
library(htmltab)

foo = function(pkg){
    url = paste0("https://cran.r-project.org/src/contrib/Archive/", pkg, "/")
    suppressWarnings(min(na.omit(lubridate::ymd_hm(htmltab(url, 1)$`Last modified`))))
}

foo("ggplot2")
#[1] "2007-06-01 14:27:00 UTC"

foo("tidyverse")
#[1] "2016-09-09 18:07:00 UTC"
© www.soinside.com 2019 - 2024. All rights reserved.