特定のRパッケージの設計に慣れて、その作成者がすべてのパッケージをCRANで検索したい場合があります(たとえば、Hadley Wickhamを使用しましょう)。このような検索を行うにはどうすればよいですか(Rを使用したいのですが、これが検索モードである必要はありません)。
4 に答える
Crantasticは著者で検索できます。crantasticを使用すると、さらに多くのことができますが、探している機能はすでにそこに提供されています。
正確には作者によるものではありませんが、おそらくメンテナによるアクセスも役立つでしょうか?
http://cran.r-project.org/web/checks/check_summary_by_maintainer.html#summary_by_maintainer
タイラーリンカーによる編集
DWinの提案は、次のコード行で実現できます。
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)
## 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"])
私はナルシストなので(そしてハドリーウィッカムは最初の100にパッケージを持っていません[これは2012年には真実でしたが、2018年には今は真実ではないかもしれません! ]):
pkgs[grep("Bolker",authors)]
# [1] "ape"
このソリューションの主な問題は、(最初の100個のパッケージだけでなく)実際にそれを行うことは、パッケージ情報についてCRANを3000回以上ヒットすることを意味することです...
編集:同じ場所にあるJeroen Oomのソリューションに基づいた、より良いソリューション:
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"
上記のBolkerのソリューションは非常に高速であり、引き続き機能しますが、2018年以降、より完全な情報を出力するpkgsearchというパッケージがあります。これがデモで、恥知らずな自己宣伝のトレンドを続けています。
r$> pkgsearch::advanced_search(Author = "Waldir", size = 100)
- "advanced search" --------------------------------------------------------------------- 11 packages in 0.001 seconds -
# package version by @ title
1 100 matlab2r 1.0.0 Waldir Leoncio 1M Translation Layer from MATLAB to R
2 100 simExam 1.0.0 Waldir Leoncio 3y Generate Simulated Data for IRT-Enabled Exams
3 83 citation 0.6.2 Jan Philipp Dietrich 1M Software Citation Tools
4 83 LOGAN 1.0.0 Denise Reis Costa 3y Log File Analysis in International Large-Scale Assessments
5 82 TruncExpFam 1.0.0 Waldir Leoncio 7d Truncated Exponential Family
6 61 contingencytables 1.0.0 Waldir Leoncio 1M Statistical Analysis of Contingency Tables
7 60 DIscBIO 1.2.0 Waldir Leoncio 10M A User-Friendly Pipeline for Biomarker Discovery in Single-Cell Transcriptomics
8 51 BayesSUR 2.0.1 Zhi Zhao 3M Bayesian Seemingly Unrelated Regression
9 44 lsasim 2.1.2 Waldir Leoncio 4M Functions to Facilitate the Simulation of Large Scale Assessment Data
10 39 BayesMallows 1.1.0 Oystein Sorensen 3M Bayesian Preference Learning with the Mallows Rank Model
11 11 xaringan 0.22 Yihui Xie 8M Presentation Ninja
デフォルトの10から増やす必要があることに注意してくださいsize
。そうしないと、すべてのパッケージを取得できません。
前述の回答の出力と比較するには:
r$> unname(as.character(mydata$Package[grep("Waldir",mydata$Author)]))
[1] "BayesMallows" "BayesSUR" "citation" "contingencytables" "DIscBIO" "LOGAN" "lsasim" "matlab2r" "simExam"
[10] "TruncExpFam" "xaringan"