Czasami przyzwyczaiłem się do konkretnego projektu paczki R i chcę przeszukać CRAN dla wszystkich paczek tego autora (na przykład skorzystajmy z Hadley Wickham). Jak mogę zrobić takie wyszukiwanie (chciałbym użyć R, ale to nie musi być tryb wyszukiwania).Wyszukaj paczki danego autora
Odpowiedz
. Możesz zrobić trochę więcej dzięki crantastic, ale funkcja, której szukasz, jest już dostępna.
To działa, ale nie mogę tego wyszukać, ale muszę przeszukiwać listę pakietów, dopóki nie znajdę paczki autora, którego chcę, a następnie mogę kliknąć na jego nazwę. Jeśli używam go źle, daj mi znać. Na przykład, jeśli szukam [dbConnect] (http://crantastic.org/packages/dbConnect), mogę znaleźć tego autora i kliknąć jego nazwisko, ale nie mogę wpisać "Kurkiewicz" (autor dbConnect) w pasku wyszukiwania i zwróć jego paczki. Jeśli to najlepsze podejście, ale wydaje się, że jest lepszy sposób, albo robię to źle. –
Chyba nie wypróbowałem paska wyszukiwania, który nie szuka przeszukiwacza pakietów. Na tej stronie zrobiłem prosty Ctrl-f i przeszukałem stronę w ten sposób. – Dason
nie wiedział o Ctrl + f To działa. Pierwsza odpowiedź i prawdopodobnie najszybsza jak dotąd dostaje czek. –
Adaptacja available.packages by publication date:
## restrict to first 100 packages (by alphabetical order)
pkgs <- unname(available.packages()[, 1])[1:100]
desc_urls <- paste(options("repos")$repos,"/web/packages/", pkgs,
"/DESCRIPTION", sep = "")
desc <- lapply(desc_urls, function(x) read.dcf(url(x)))
authors <- sapply(desc, function(x) x[, "Author"])
Ponieważ jestem narcyzem (i Hadley Wickham nie ma pakietów w pierwszej 100):
pkgs[grep("Bolker",authors)]
# [1] "ape"
Głównym problemem z tego rozwiązania jest to, że robi to na prawdę (a nie tylko na pierwsze 100 pakietów) oznacza uderzanie CRAN 3000 razy dla informacji o pakiecie ...
edit: lepsze rozwiązanie, w oparciu o rozwiązania Jeroen OOM w tym samym miejscu:
recent.packages.rds <- function(){
mytemp <- tempfile()
download.file(paste0(options("repos")$repos,"/web/packages/packages.rds"),
mytemp)
mydata <- as.data.frame(readRDS(mytemp), row.names=NA)
mydata$Published <- as.Date(mydata[["Published"]])
mydata
}
mydata <- recent.packages.rds()
unname(as.character(mydata$Package[grep("Wickham",mydata$Author)]))
# [1] "classifly" "clusterfly" "devtools" "evaluate" "fda"
# [6] "geozoo" "ggmap" "ggplot2" "helpr" "hints"
# [11] "HistData" "hof" "itertools" "lubridate" "meifly"
# [16] "memoise" "munsell" "mutatr" "normwhn.test" "plotrix"
# [21] "plumbr" "plyr" "productplots" "profr" "Rd2roxygen"
# [26] "reshape" "reshape2" "rggobi" "roxygen" "roxygen2"
# [31] "scales" "sinartra" "stringr" "testthat" "tourr"
# [36] "tourrGui"
Kod powinien przejść do pakietu 'fortuny'. P: co otrzymasz, jeśli pominiesz Bolkera w autorze pakietów R? Odp .: Małpa. –
Dzięki Ben. Zdecydowanie podejście, ale jak zauważysz zajmuje dużo czasu. Podejście Dasona jest prawdopodobnie najbardziej efektywne.Dzięki za rozwiązanie R :) –
sprawdź zaktualizowaną wersję ... –
Niezupełnie przez autora, ale być może dostęp przez opiekuna będzie również przydatny?
http://cran.r-project.org/web/checks/check_summary_by_maintainer.html#summary_by_maintainer
EDIT Tyler Rinker
sugestia Dwin mogą być doprowadzone do skutku z tych linii kodu:
search.lib <- function(term, column = 1){
require(XML)
URL <- "http://cran.r-project.org/web/checks/check_summary_by_maintainer.html#summary_by_maintainer"
dat <-readHTMLTable(doc=URL, which=1, header=T, as.is=FALSE)
names(dat) <- trimws(names(dat))
dat$Maintainer[dat$Maintainer == ""] <- NA
dat$Maintainer = zoo::na.locf(dat$Maintainer)
if (is.numeric(column)) {
dat[agrep(term, dat[, column]), 1:3]
} else {
dat[agrep(term, dat[, agrep(column, colnames(dat))]), 1:3]
}
}
search.lib("hadley")
search.lib("bolker")
search.lib("brewer", 2)
DWin Zamieściłem (moje) rozwiązanie na moje pytanie, korzystając z Twojej sugestii +1 –
Z powodu pustych wierszy zwracano tylko alfabetycznie pierwszy pakiet każdego autora - może z powodu aktualizacji formatowania na stronie? Edytowane w celu uzupełnienia brakujących wartości i zwrócenia wszystkich wyników. – Gregor
- 1. @ link do innej paczki wewnątrz paczki-info.java
- 2. Wyszukaj ciągi cykliczne
- 3. wyszukaj nazwy tabel w PSQL
- 4. Zalety paczki nad JSON
- 5. Funkcje regulacji paczki
- 6. paczki setup.py i unicode_literals
- 7. Przepuszczanie wyjątku jako paczki
- 8. Jak określić autora pakietu R?
- 9. Gdzie umieścić autora w cytacie?
- 10. Strony archiwum autora w Jekyll
- 11. git diff z filtrem autora
- 12. Filtrowanie według autora w TortoiseHg
- 13. Zastąp autora przy git merge
- 14. Ogórek - Kapibara wyszukaj tekst w wierszu tabeli
- 15. gdzie umieścić DTD wewnątrz paczki
- 16. Wyłącz rejestrowanie dla konkretnej paczki
- 17. Jak napisać mapę do paczki?
- 18. Próba załadowania paczki w Julia
- 19. Wyszukaj wszystkie istniejące funkcje zależności pakietów?
- 20. Wyszukaj występowanie listy wartości
- 21. Wyszukaj kod PL/SQL
- 22. Wyszukaj element w stercie
- 23. Wyszukaj okno dialogowe folderu
- 24. Wyszukaj JavaDoc w Eclipse
- 25. Przejrzysty odpowiednik danego koloru
- 26. Uzyskiwanie rozszerzeń danego UTType
- 27. Użyj identyfikatora paczki zamiast identyfikatora paczki produktu za pomocą Xcode 7
- 28. C# - Wyszukaj menedżera użytkowników w aktywnym katalogu
- 29. Edycja autora dla konkretnych zestawów zmian
- 30. Silverstripe: Filtruj posty na blogach przez autora
myślę ten post http://stackoverflow.com/ pytania/8722233/available-packages-by-publication-date-ma podstawowe składniki, których potrzebujesz ... –
Podobne pytanie opublikowałem kilka dni temu (http://stackoverflow.com/questions/10032079/crantastic-p ackages-sorted-by-number-of-users), ale szybko został zamknięty, ponieważ nie był prawdziwym pytaniem programistycznym. Mam nadzieję, że będziesz miał więcej szczęścia ode mnie (co prawda twoje słowa są znacznie lepsze niż moje!). Jeśli jesteś zainteresowany rozwiązaniem R, opublikowałem artykuł z kodem do skrobania (niektórych) danych crantastic w data.frame na http://r-de-jeu.blogspot.com/2012/04/50- najczęściej używany-r-packages.html. – flodel
Usunąłem odpowiedź zamieszczoną w pytaniu i dodałem ją do odpowiedzi udzielonej przez @DWin. Proszę nie odpowiadać na własne pytanie w pytaniu - to staje się zbyt mylące. Jeśli wysłana odpowiedź nie do końca się tam dostanie, opublikuj i zaakceptuj własną odpowiedź. – Andrie