5

available.packages()列出 CRAN 上所有可用软件包的功能。是否有类似的功能来查找所有可用的小插图?如果不是,我将如何获得所有小插曲及其相关包的列表?

作为一个角落案例,请记住该data.table包有 3 个与之相关的小插曲。

编辑:根据安德烈的回应,我意识到我并不清楚。我知道用于查找所有可用本地小插图的小插图功能,我正在寻找一种方法来获取 CRAN 上所有包的所有小插图。

4

2 回答 2

5

我似乎记得在回答一些 SO 问题(现在找不到)时看到这个并决定,因为信息不包含在 的输出中,也不包含在应用到available.packages()的结果中(来自 Jeroen Ooms 的技巧) ,我想不出一种非刮擦的方式来做到这一点......readRDS@CRAN/web/packages/packages.rds

这是我的刮刀,应用于前 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")])

可能有办法清理它/使它更紧凑,但它似乎工作正常。您的刮一次/偶尔更新策略似乎是合理的。或者,如果您愿意,您可以每天(或每周或任何看起来合理的方式)抓取并将结果保存/发布到可公开访问的地方,然后在包中包含一个带有硬编码该 URL 的函数……甚至创建一个格式良好的 HTML 表,带有链接,全世界都可以使用(然后将伟哥广告添加到页面上,然后 $$PROFIT$$ ...)

编辑:将下载和 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()特别有用,因为它创建了一个带有超链接的网页:

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 回答