R:タスクビューにどのパッケージにvignettesまたはdemosが関連付けられているかを伝える方法
質問
パッケージをインストールせずに、特定のタスクビューにどのパッケージを使用しているかを調べるための簡単な方法がありますか?どのパッケージが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
フォルダの存在をテストするだけで、削除する必要はありません。効率については、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サイトが抽出されていないソースコードはどこでもメタデータに保存されていません。Doque、Messy、Slow、Cranのすべてをダウンロードしてすべてのパッケージをテストする必要があります。
所属していません StackOverflow