Domanda

Senza installare i pacchetti, c'è un modo rapido per scoprire quali pacchi in una determinata vista attività hanno vignette o demo associate a loro?Ho capito come dire quali pacchetti sono in una determinata attività di attività da 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]
.

Ecco cosa ho provato, ma i tentativi non sono giusti, poiché considerano solo i pacchetti che ho già:

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

Spero di evitare raschiare, poiché non ho esperienza con esso, ma forse è l'unico modo.qualche idea?

È stato utile?

Soluzione

Non è necessario raschiare, basta testare per l'esistenza di una cartella vignettes sul Web di Cran.Per efficienza, utilizzare httr e HEAD:

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

Proof per induzione:

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

funziona per quelli, quindi funziona per tutto.

Vectorise se vuoi:

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

L'unico modo per informare se un pacchetto ha una demo è scaricare il file di archivio sorgente e vedere se ha un demo subdir - siti di cran non hanno il codice sorgente estratto e non sono memorizzati in metadati ovunque.Fattibile, ma disordinato, lento, richiede il download di tutto il cran per testare tutti i pacchetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top