2012-05-31 17 views
5

CRANで利用可能なすべてのパッケージを一覧表示する機能はavailable.packages()です。利用可能なビネットをすべて見つける類似の関数はありますか?そうでない場合は、すべてのビネットとそれらが関連付けられているパッケージのリストをどのように取得できますか?利用可能なCRANビネット

data.tableパッケージには、3つのビネットが関連付けられていることに注意してください。

EDIT:Per Andrieの回答私は明確ではないことを認識しています。私は利用可能なすべてのローカルビネットを見つけるためのビネット機能について知っています。私はCRAN上のすべてのパッケージのすべてのビネットを取得する方法をとっています。

+1

システム管理者がこのアイデアを愛していないと確信していますが、あなたはCRANのすべてのパッケージインデックスを(例えば 'XML'と' 'RCurl'で)解析できます。 – daroczig

+0

私はこのことをいくつかの質問に答えて(これを見つけることはできません)、情報が 'available.packages()'の出力にも含まれていないことや適用結果'readRDS'を' @CRAN/web/packages/packages.rds'(Jeroen Oomsのトリック)にすると、私はそれを行うための非掻き分けの方法を考えることができませんでした。 –

+0

これは、 CRANを対象としていますので、掻き取り方法は最善の方法ではありません。私は一度掻き集めて、新しいバージョンのパッケージで更新されるパッケージにデータセットとして情報を格納することができます。おそらく可能性がある。 –

答えて

5

私はいくつかのSOの質問に応答して、このを見て(今それを見つけることができない)と決定思い出すように見えます情報がavailable.packages()の出力に含まれていないか、readRDSから@CRAN/web/packages/packages.rds(Jeroen Oomsのトリック)を適用した結果に含まれていないため、私はそれを行うための非掻き分けの方法を考えることができませんでした...

H (44のビネットにつながる)最初の100個のパッケージに適用EREの私のスクレーパー、

pkgs <- unname(available.packages()[, 1])[1:100] 
vindex_urls <- paste0(getOption("repos"),"/web/packages/", pkgs, 
    "/vignettes/index.rds", sep = "") 
getf <- function(x) { 
     ## I think there should be a way to do this directly 
     ## with readRDS(url(...)) but I can't get it to work 
    suppressWarnings(
       download.file(x,"tmp.rds",quiet=TRUE)) 
    readRDS("tmp.rds") 
} 
library(plyr) 
vv <- ldply(vindex_urls, 
      .progress="text", 
      function(x) { 
       if (inherits(z <- try(getf(x),silent=TRUE), 
        "try-error")) NULL else z 
      }) 
tmpf <- function(x,n) { if (is.null(x)) NULL else 
          data.frame(pkg=n,x) } 
vframe <- do.call(rbind,mapply(tmpf,vv,pkgs)) 
rownames(vframe) <- NULL 
head(vframe[,c("pkg","Title")]) 

はこれをアップ/クリーンそれをよりコンパクトにする方法があるかもしれませんが、OKに動作するようです。あなたのかき集める/時折更新する戦略は妥当と思われます。または、毎日(または毎週またはそれに合っていると思われるどんなものでも)掻き集めて結果を公開/公開することができたら、そのURLにパッケージにハードコードされた関数を含めるか、うまくフォーマットされたHTMLテーブルを作成する

編集::世界で使用可能なリンクがあり、ダウンロードしても関数内のreadRDSもラップされています私はすべてを包むことができますtry

+0

私は、このバージョンまたは変更されたバージョンで掻き集め、出力をパッケージのデータセットとして含めるつもりだと思います。私はおそらくビアグラの広告を忘れてしまいますが、ありがとうございます。 –

+0

私は上記の機能を試して問題に遭遇しました。 'paste0'を使って'、sep = "" 'を削除しました。しかし、私はv vの部分を実行しようとするとき。それは20%で停止し、私に次のエラーを与えます: 'readRDS(tmp.rds)のエラー:接続からの読み込みエラー'これを克服する方法のアイデア?私は間違って何をしていますか? –

+1

わからない。たぶんどこかに壊れたindex.rdsファイルがありますか? 'readRDS'のまわりをスキップするために' try'ステートメントをもう1つ置くことができます。この関数は 'ldply'を使うので、処理中の現在のパッケージの名前にアクセスすることはできません。それを吸う価値があるかもしれませんし、より良い透明性のために 'for'ループを使用するかもしれません... –

2

機能vignette()browseVignettes()は、お使いのマシンにインストールされているパッケージのすべてのビンを表示します。

vignette(package="data.table") 

Vignettes in package ‘data.table’: 

datatable-faq       Frequently asked questions (source, pdf) 
datatable-intro      Quick introduction (source, pdf) 
datatable-timings      Timings of common tasks (source, pdf) 

browseVignettes()それは、ハイパーリンクを含むWebページを作成するので、特に有用である:

browseVignettes(package="data.table") 

Vignettes found by browseVignettes(package = "data.table") 

Vignettes in package data.table 

Frequently asked questions - PDF R LaTeX/noweb 
Quick introduction - PDF R LaTeX/noweb 
Timings of common tasks - PDF R LaTeX/noweb 
+1

ありがとうAndrie、私は実際にローカルにインストールされたパッケージだけでなく、CRANが提供しなければならないビネットの完全なリストの後です。私はこれが私が望んでいたより少し難しいかもしれないと思う。 –

関連する問題