R:Como saber quais pacotes em um modo de Exibição de Tarefa tem associado vinhetas ou demonstrações

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

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top