R:Cómo saber qué paquetes en una Vista de tareas tienen viñetas o demostraciones asociadas

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

Pregunta

Sin instalar los paquetes, ¿existe una forma rápida de averiguar qué paquetes en una vista de tareas determinada tienen viñetas o demostraciones asociadas?Descubrí cómo saber qué paquetes están en una vista de tareas determinada desde 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]

Esto es lo que he intentado, pero los intentos no son correctos, ya que solo consideran paquetes que ya tengo:

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

Espero evitar el scraping, ya que no tengo experiencia con ello, pero quizás sea la única forma.¿Alguna idea?

¿Fue útil?

Solución

No es necesario raspar, solo probar la existencia de un vignettes carpeta en la web de CRAN.Para mayor eficiencia, utilice httr y HEAD:

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

Prueba por inducción:

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

funciona para ellos, por lo que funciona para todo.

Vectorízalo si quieres:

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

La única forma de saber si un paquete tiene una demostración es descargar el archivo fuente y ver si tiene un subdirectorio de demostración: los sitios CRAN no tienen código fuente extraído y no están almacenados en metadatos en ninguna parte.Es factible, pero complicado y lento, requiere descargar todo CRAN para probar todos los paquetes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top