R:Como saber quais pacotes em um modo de Exibição de Tarefa tem associado vinhetas ou demonstrações
Pergunta
Sem instalar os pacotes, existe uma forma rápida de descobrir quais pacotes em um determinado modo de Exibição de Tarefa tem vinhetas ou demos a eles associados?Eu descobri como saber quais os pacotes que estão em um determinado modo de Exibição de Tarefa a 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]
Aqui está o que eu tentei, mas as tentativas não são, como eles consideram somente os pacotes que eu já tenho:
vignette(package= c(pckgs))
browseVignettes(package= c(pckgs))
demo(package=c(pckgs))
Eu estou esperando para evitar raspar, como eu não tenho experiência com isso, mas talvez seja a única forma.Quaisquer pensamentos?
Solução
Você não precisa raspar, apenas testar a existência de uma vignettes
pasta na web de CRAN.Para a eficiência, o uso httr
e HEAD
:
hasvig <- function(packagename){
require(httr)
url = paste0(getOption("repos"),"/web/packages/",packagename,"/vignettes")
c = HEAD(url)
return(c$status_code==200)
}
Prova por indução:
> hasvig("sp")
[1] TRUE
> hasvig("abd")
[1] FALSE
ele trabalha para aqueles, por isso funciona para tudo.
Vectorise se você deseja:
> hasvigs = Vectorize(hasvig)
> hasvigs(c("sp","abd","Rcpp"))
sp abd Rcpp
TRUE FALSE TRUE
A única maneira de saber se um pacote tem um demo é baixar o arquivo de origem do arquivo e ver se ele tem uma demo sub - CRAN sites não foram extraídos do código fonte e não é armazenada nos metadados em qualquer lugar.Factível, mas confuso, lento, requer o download de todas CRAN para testar todos os pacotes.