R:Как определить, с какими пакетами в представлении задачи связаны виньетки или демо-версии

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

Вопрос

Есть ли быстрый способ узнать, без установки пакетов, с какими пакетами в данном представлении задачи связаны виньетки или демо-версии?Я выяснил, как определить, какие пакеты находятся в заданном представлении задачи из 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]

Вот что я пробовал, но попытки оказались неудачными, поскольку они рассматривают только те пакеты, которые у меня уже есть:

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

Я надеюсь избежать выскабливания, так как у меня нет опыта в этом, но, возможно, это единственный способ.Есть какие-нибудь мысли?

Это было полезно?

Решение

Вам не нужно царапать, просто проверьте наличие vignettes папка на веб-сайте CRAN.Для повышения эффективности используйте httr и HEAD:

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

Доказательство методом индукции:

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

это работает для них, поэтому это работает для всего.

Векторизируйте его, если хотите:

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

Единственный способ определить, есть ли в пакете демонстрационный файл, - это загрузить исходный архивный файл и посмотреть, есть ли в нем демонстрационный поддиректор - на сайтах CRAN нет извлеченного исходного кода, и он нигде не хранится в метаданных.Выполнимо, но грязно, медленно, требует загрузки всего CRAN для тестирования всех пакетов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top