R :Comment savoir quels packages dans une vue des tâches sont associés à des vignettes ou des démos

StackOverflow https://stackoverflow.com//questions/22009048

Question

Sans installer les packages, existe-t-il un moyen rapide de savoir quels packages dans une vue des tâches donnée sont associés à des vignettes ou des démos ?J'ai compris comment savoir quels packages se trouvent dans une vue des tâches donnée à partir de R :

library(ctv)
# get all the available task views
taskviews<-available.views()

# get task view of interest (e.g. "TimeSeries")
tv_of_interest<-taskviews[[which(sapply(taskviews,'[',1)=="TimeSeries")]] 

# get all the packages in the task view
pckgs <- tv_of_interest[['packagelist']][1]

Voici ce que j'ai essayé, mais les tentatives ne sont pas correctes, car elles ne prennent en compte que les packages que j'ai déjà :

vignette(package= c(pckgs)) 
browseVignettes(package= c(pckgs))
demo(package=c(pckgs))

J'espère éviter de gratter, car je n'en ai aucune expérience, mais c'est peut-être le seul moyen.Des pensées?

Était-ce utile?

La solution

Vous n'avez pas besoin de gratter, il suffit de tester l'existence d'un vignettes dossier sur le site Web du CRAN.Pour plus d’efficacité, utilisez httr et HEAD:

hasvig <- function(packagename){
    require(httr)
    url = paste0(getOption("repos"),"/web/packages/",packagename,"/vignettes")
    c = HEAD(url)
    return(c$status_code==200)
}

Preuve par induction :

> hasvig("sp")
[1] TRUE
> hasvig("abd")
[1] FALSE

ça marche pour ceux-là, donc ça marche pour tout.

Vectorisez-le si vous le souhaitez :

> hasvigs = Vectorize(hasvig)
> hasvigs(c("sp","abd","Rcpp"))
   sp   abd  Rcpp 
 TRUE FALSE  TRUE 

La seule façon de savoir si un package a une démo est de télécharger le fichier d'archive source et de voir s'il a un sous-répertoire de démonstration - les sites CRAN n'ont pas extrait le code source et il n'est stocké nulle part dans les métadonnées.Faisable, mais compliqué, lent, nécessite de télécharger tout CRAN pour tester tous les packages.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top