可用的CRAN小插曲

时间:2012-05-31 00:17:33

标签: r data.table cran vignette

available.packages()函数列出CRAN上可用的所有软件包。是否有类似的功能来查找所有可用的插图?如果不是,我如何获得所有晕影及其与之关联的包的列表?

作为一个需要记住的问题,data.table包有3个与之关联的小插图。

编辑:Per Andrie的回答我意识到我不清楚。我知道用于查找所有可用本地小插图的插图功能,我正在寻找获得CRAN上所有包的所有插图的方法。

2 个答案:

答案 0 :(得分:5)

我似乎记得在回答一些SO问题(现在找不到)并决定由于信息未包含在available.packages()的输出中,也未在申请结果中查看readRDS@CRAN/web/packages/packages.rds(来自Jeroen 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")])

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

编辑:在一个函数中包含了下载和readRDS,因此我可以将整个内容包装在try

答案 1 :(得分: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