R :Comment savoir quels packages dans une vue des tâches sont associés à des vignettes ou des démos
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?
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.