가 좀 SO 질문에 대한 응답이보고 기억하는 것을 (지금을 찾을 수 없습니다) 및 결정 정보가 available.packages()
의 출력이나 readRDS
에서 @CRAN/web/packages/packages.rds
(Jeroen Ooms의 트릭)을 적용한 결과에 포함되지 않았기 때문에 나는 그걸하는 비 긁적 인 방법을 생각할 수 없었습니다.
H (44 개 네트에 이르는) 처음 100 개 패키지에 적용 조립식의 내 스크레이퍼,
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 표를 만들 수도 있습니다. , 그리고 전세계가 사용할 수있는 링크 (그리고 나서 페이지에 Viagra 광고를 추가하고 $$ PROFIT $$ ...)
편집 : 다운로드 및 readRDS 기능을 모두 포함하므로 모든 것을 포장 할 수 있습니다. try
시스템 관리자가이 아이디어를 좋아하지 않을 수도 있지만 CRAN의 모든 패키지 색인을 구문 분석 할 수 있습니다 (예 :'XML' 및'RCurl'). – daroczig
필자는이 질문에 대한 답변으로 이것을보고 (정보를 찾을 수 없음) 정보가'available.packages()'의 결과에 포함되지 않았거나 적용 결과에 포함되어 있지 않기 때문에 'readRDS'를'@ CRAN/web/packages/packages.rds' (Jeroen Ooms의 속임수)로 바꾼다면, 나는 긁어 모으지 않는 방법을 생각할 수 없었습니다 ... –
이것은 패키지의 일부일 것입니다. CRAN을위한 것입니다. 근근이 살아가는 방법은 최선의 방법이 아닙니다. 한 번 긁어 내서 패키지의 새로운 버전으로 업데이트되는 패키지의 데이터 세트로 정보를 저장합니다. 아마 가능성. –