有available.packages()
列出 CRAN 上所有可用软件包的功能。是否有类似的功能来查找所有可用的小插图?如果不是,我将如何获得所有小插曲及其相关包的列表?
作为一个角落案例,请记住该data.table
包有 3 个与之相关的小插曲。
编辑:根据安德烈的回应,我意识到我并不清楚。我知道用于查找所有可用本地小插图的小插图功能,我正在寻找一种方法来获取 CRAN 上所有包的所有小插图。
有available.packages()
列出 CRAN 上所有可用软件包的功能。是否有类似的功能来查找所有可用的小插图?如果不是,我将如何获得所有小插曲及其相关包的列表?
作为一个角落案例,请记住该data.table
包有 3 个与之相关的小插曲。
编辑:根据安德烈的回应,我意识到我并不清楚。我知道用于查找所有可用本地小插图的小插图功能,我正在寻找一种方法来获取 CRAN 上所有包的所有小插图。
我似乎记得在回答一些 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
功能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