Доступные виньетки CRAN
Там есть available.packages()
функция для перечисления всех пакетов, доступных на CRAN. Есть ли подобная функция для поиска всех доступных виньеток? Если нет, то как мне получить список всех виньеток и пакетов, с которыми они связаны?
В качестве углового случая, чтобы иметь в виду data.table
Пакет имеет 3 виньетки, связанные с ним.
РЕДАКТИРОВАТЬ: Ответ Пер Андри я понимаю, что я не был ясен. Я знаю о функции виньетки для поиска всех доступных локальных виньеток, я хочу найти все виньетки всех пакетов на CRAN.
2 ответа
Кажется, я вспоминаю, как смотрел на это в ответ на какой-то вопрос 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 $$...)
edit: обернул загрузку и 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