有available.packages()
函数列出CRAN上可用的所有软件包。是否有类似的功能来查找所有可用的插图?如果不是,我如何获得所有晕影及其与之关联的包的列表?
作为一个需要记住的问题,data.table
包有3个与之关联的小插图。
编辑:Per Andrie的回答我意识到我不清楚。我知道用于查找所有可用本地小插图的插图功能,我正在寻找获得CRAN上所有包的所有插图的方法。
答案 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