Поиск пакетов определенным автором

Иногда я привык к определенному дизайну R-пакета и хочу искать CRAN для всех пакетов этого автора (например, используйте Hadley Wickham). Как я могу выполнить такой поиск (я бы хотел использовать R, но это не должно быть способом поиска).

Ответы

Ответ 1

Crantastic может искать по автору. Вы можете сделать немного больше с crantastic, но функциональность, которую вы ищете, уже предоставлена ​​там.

Ответ 2

Не совсем автор, но, возможно, доступ к нему также будет полезен?

http://cran.r-project.org/web/checks/check_summary_by_maintainer.html#summary_by_maintainer

EDIT by Tyler Rinker

Предложение DWin может быть реализовано с помощью этих строк кода:

search.lib <- function(term, column = 1){
    require(XML)
    URL <- "http://cran.r-project.org/web/checks/check_summary_by_maintainer.html#summary_by_maintainer"
    dat <-readHTMLTable(doc=URL, which=1, header=T, as.is=FALSE)
    names(dat) <- trimws(names(dat))
    dat$Maintainer[dat$Maintainer == ""] <- NA
    dat$Maintainer = zoo::na.locf(dat$Maintainer)
    if (is.numeric(column)) {
        dat[agrep(term, dat[, column]), 1:3]
    } else {
        dat[agrep(term, dat[, agrep(column, colnames(dat))]), 1:3]
    }
}

search.lib("hadley")
search.lib("bolker")
search.lib("brewer", 2)

Ответ 3

Адаптировано из доступных.пакетов по дате публикации:

## restrict to first 100 packages (by alphabetical order)
pkgs <- unname(available.packages()[, 1])[1:100]
desc_urls <- paste(options("repos")$repos,"/web/packages/", pkgs, 
    "/DESCRIPTION", sep = "")
desc <- lapply(desc_urls, function(x) read.dcf(url(x)))
authors <- sapply(desc, function(x) x[, "Author"])

Так как я нарциссист (и Хэдли Уикхэм не имеет пакетов в первых 100):

pkgs[grep("Bolker",authors)]
# [1] "ape"

Основная проблема с этим решением состоит в том, что выполнение этого для реальных (а не только для первых 100 пакетов) означает попадание CRAN 3000+ раз для информации о пакете...

edit: лучшее решение, основанное на решении Jeroen Oom в том же месте:

recent.packages.rds <- function(){
    mytemp <- tempfile()
    download.file(paste0(options("repos")$repos,"/web/packages/packages.rds"),
                  mytemp)
    mydata <- as.data.frame(readRDS(mytemp), row.names=NA)
    mydata$Published <- as.Date(mydata[["Published"]])
    mydata
}

mydata <- recent.packages.rds()
unname(as.character(mydata$Package[grep("Wickham",mydata$Author)]))
# [1] "classifly"    "clusterfly"   "devtools"     "evaluate"     "fda"         
# [6] "geozoo"       "ggmap"        "ggplot2"      "helpr"        "hints"       
# [11] "HistData"     "hof"          "itertools"    "lubridate"    "meifly"      
# [16] "memoise"      "munsell"      "mutatr"       "normwhn.test" "plotrix"     
# [21] "plumbr"       "plyr"         "productplots" "profr"        "Rd2roxygen"  
# [26] "reshape"      "reshape2"     "rggobi"       "roxygen"      "roxygen2"    
# [31] "scales"       "sinartra"     "stringr"      "testthat"     "tourr"       
# [36] "tourrGui"