R:タスクビューにどのパッケージにvignettesまたはdemosが関連付けられているかを伝える方法

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))
.

私はそれを経験していないので、掻き取りを避けたいと思っていますが、おそらくそれは唯一の方法です。何かご意見は?

役に立ちましたか?

解決

クランのWeb上のvignettesフォルダの存在をテストするだけで、削除する必要はありません。効率については、httrHEADを使用します。

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サイトが抽出されていないソースコードはどこでもメタデータに保存されていません。Doque、Messy、Slow、Cranのすべてをダウンロードしてすべてのパッケージをテストする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top