5

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

覚えておくべきコーナーケースとして、data.tableパッケージには3つのビネットが関連付けられています。

編集:アンドリーの応答によると、私ははっきりしていなかったことに気づきました。利用可能なすべてのローカルビネットを検索するためのビネット機能について知っています。CRAN上のすべてのパッケージのすべてのビネットを取得する方法を探しています。

4

2 に答える 2

5

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

これが私のスクレーパーで、最初の 100 個のパッケージに適用されます (44 個のビネットにつながります)

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")])

これをクリーンアップ/よりコンパクトにする方法があるかもしれませんが、うまくいくようです。1回スクレイプ/時々更新する戦略は合理的です。または、毎日(または毎週または妥当と思われるもの)スクレイピングし、結果を一般にアクセス可能な場所に保存/投稿したい場合は、その URL をパッケージにハードコーディングした関数を含めます...または適切にフォーマットされた HTML テーブルを作成することさえできます、全世界が使用できるリンク付き (そして、バイアグラ広告をページに追加し、$$PROFIT$$ ...)

edit : ダウンロードと readRDS の両方を関数にラップしたので、全体をtry

于 2012-06-01T10:18:16.237 に答える
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 
于 2012-05-31T05:09:07.827 に答える