मैं कुछ तो सवाल के जवाब में यह को देखकर याद करने लगते हैं (यह अब नहीं मिल सकता है) और निर्णय लेने से कि जब जानकारी available.packages()
के उत्पादन में शामिल नहीं है, और न ही @CRAN/web/packages/packages.rds
को readRDS
लागू करने (जेरोन Ooms से एक चाल) के परिणाम में, मैं एक गैर scraping तरह से यह करने के लिए के बारे में सोच नहीं सकता है ...
एच पहले की मेरी स्क्रेपर, पहले 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")])
तरीके इस ऊपर/साफ यह अधिक कॉम्पैक्ट बनाने के लिए हो सकता है, लेकिन यह ठीक से काम करने लगता है। कभी-कभी रणनीति/बार-बार आपकी स्क्रैप उचित लगती है। या यदि आप चाहते थे कि आप दैनिक (या साप्ताहिक या जो भी उचित लगते हैं) को स्क्रैप कर सकें और परिणामों को कहीं भी सार्वजनिक रूप से सुलभ/पोस्ट कर सकें, तो पैकेज में हार्ड-कोड किए गए यूआरएल के साथ एक फ़ंक्शन शामिल करें ... या यहां तक कि एक अच्छी रूप से स्वरूपित HTML तालिका भी बनाएं लिंक होते हैं, कि पूरी दुनिया इस्तेमाल कर सकते हैं (और फिर पृष्ठ के लिए वियाग्रा विज्ञापन जोड़ सकते हैं और $$ लाभ $$ ...)
संपादित: दोनों डाउनलोड और एक समारोह में readRDS लिपटे, इसलिए मैं try
स्रोत
2012-06-01 10:18:16
में पूरी चीज को लपेट सकता हूं, आप सीआरएएन पर सभी पैकेज इंडेक्स को पार्स कर सकते हैं (उदाहरण के लिए 'एक्सएमएल' और' आरसीआरएलएल 'के साथ) हालांकि मुझे पूरा यकीन है कि सिसाडमिन इस विचार को पसंद नहीं करेंगे। – daroczig
मैं कुछ तो सवाल के जवाब में यह को देखकर याद करने लगते हैं (यह अब नहीं मिल सकता है) और निर्णय लेने से है कि सूचना 'available.packages()' के उत्पादन में शामिल नहीं है के बाद से, और न ही लागू करने के परिणाम में '' readRDS' @ क्रैन/वेब/संकुल/packages.rds' (जेरोन Ooms से एक चाल), मैं एक गैर scraping तरह से यह करने के लिए के बारे में सोच नहीं सकता है ... –
यह एक पैकेज का हिस्सा हो सकता है कि सीआरएएन के लिए है, इसलिए स्क्रैपिंग विधि तब तक का सबसे अच्छा तरीका नहीं है जब तक कि ... मैं एक बार स्क्रैप कर सकता हूं और पैकेज में डेटा सेट के रूप में जानकारी संग्रहीत करता हूं जो पैकेज के प्रत्येक नए संस्करण के साथ अपडेट हो जाता है। शायद एक संभावना है। –