18

特定のRパッケージの設計に慣れて、その作成者がすべてのパッケージをCRANで検索したい場合があります(たとえば、Hadley Wickhamを使用しましょう)。このような検索を行うにはどうすればよいですか(Rを使用したいのですが、これが検索モードである必要はありません)。

4

4 に答える 4

14

Crantasticは著者で検索できます。crantasticを使用すると、さらに多くのことができますが、探している機能はすでにそこに提供されています。

于 2012-04-10T01:22:36.050 に答える
14

正確には作者によるものではありませんが、おそらくメンテナによるアクセスも役立つでしょうか?

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)
于 2012-04-10T03:05:28.443 に答える
11

公開日までにavailable.packagesから適応:

## 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"  
于 2012-04-10T01:57:19.290 に答える
1

上記の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"
于 2022-01-28T08:08:50.597 に答える