パッケージを探すパッケージの話。
今年も残すところあとひと月半。Advent Calendarの季節がやってきましたね。
Rおじさん2年目突入ということで、今年は頑張って参加です。
さて、R4DSの和訳本も出て、tidyという存在は身近なものになりました(…よね?)
tidyの訳語についてはyutannihilationさんが下記で書かれています。
(僕の中では「よしなに」的な意味になっています)
さて、こちらにtidyポエム Advent Calendar 2017 があります。
…きっと、「参加したいけどidyなパッケージって何があるかわからないなー…」ということで参加をためらっている方もいるのでは。
先の記事のコマンドを実行してみます。
x <- available.packages() grep("tidy", rownames(x), value = TRUE) # [1] "htmltidy" "tidyboot" "tidycensus" "tidygenomics" "tidygraph" # [6] "tidyquant" "tidyr" "tidyRSS" "tidyselect" "tidystats" # [11] "tidystringdist" "tidytext" "tidyverse" "tidyxl"
(あれ、増えてる…)
このコマンドで、パッケージ名にtidyと入っているものは見つかりました。しかし、パッケージの説明や関数、その説明など色々なところにtidyという文字は入っているはずです。
…ということで、tidyという単語が入ったパッケージを探してみます。 …で、パッケージを探せるパッケージはないか探していたところ、sosパッケージなるものを見つけました。
使ってみます。maxPagesのページ数は絞ってみます(デフォルトは20)
install.packages("sos") sos::findFn("tidy", maxPages = 1) # found 595 matches; retrieving 1 page, 20 matches.
結果はこんな感じ。
1ページ当たり20行、デフォルトだと400項目まで見れるようですが、ヒットしたのは595件。思ったより多い…。
packageの列を見てみると、broomやtidyほげほげなパッケージ以外にも見つかりますね。この結果からパッケージを絞ってみたりすると良いのではと思います。
このパッケージ、調べると結構前から存在するようですね(oldバージョンを見ると2009年ごろから)
なお、bsae::readLines のように、
unlink("ex.data") # tidy up
コメント中のものもヒットするようです。
sosパッケージ中には他にもいくつか関数があるので、便利そうな使い方が見つかったらまた何か書きます。
tidyなパッケージ以外にも、パッケージ探す際に便利かな…
Enjoy!!
追記
この関数の結果はdata.frameです。なので、package列を取り出してuniqueすればパッケージが得られますね。
x <- sos::findFn("tidy", maxPages = 30) # found 595 matches; retrieving 30 pages # 2 3 4 5 6 7 8 9 10 # 11 12 13 14 15 16 17 18 19 20 # 21 22 23 24 25 26 27 28 29 30 # # Downloaded 584 links in 176 packages. unique(x$Package) # [1] "broom" "hansard" "mnis" "tidytext" # [5] "rlang" "funrar" "sweep" "zFactor" # [9] "fivethirtyeight" "dotwhisker" "tidyr" "tidyquant" # [13] "textshape" "unpivotr" "dplyr" "plater" # [17] "officer" "ggeffects" "esvis" "widyr" # [21] "getCRUCLdata" "sjstats" "rnoaa" "rematch2" # [25] "Zelig" "bomrang" "tidystringdist" "R.rsp" # [29] "tidycensus" "breathtestcore" "permutations" "tadaatoolbox" # [33] "OpasnetUtils" "wikitaxa" "brainGraph" "ggsn" # [37] "htmltidy" "radiant.data" "cleanNLP" "Tmisc" # [41] "lifelogr" "rodham" "highcharter" "owmr" # [45] "proustr" "GSODR" "NCmisc" "RStoolbox" # [49] "pixiedust" "jtools" "sparklyr" "parlitools" # [53] "formatR" "base" "MBHdesign" "robCompositions" # [57] "tidygraph" "nlshelper" "rsample" "vcfR" # [61] "iadf" "tabularaster" "crawl" "tidyRSS" # [65] "IRISMustangMetrics" "TeXCheckR" "joineRML" "oddsratio" # [69] "prediction" "fbar" "eechidna" "errors" # [73] "janeaustenr" "listless" "spbabel" "udpipe" # [77] "units" "mudata" "photobiology" "PolyPatEx" # [81] "tidyxl" "GGally" "qtl" "glmbb" # [85] "sjPlot" "quickpsy" "XiMpLe" "rstansim" # [89] "polmineR" "rNOMADS" "lexRankr" "arules" # [93] "atlantistools" "comtradr" "heemod" "icd" # [97] "lessR" "mandelbrot" "naniar" "net.security" # [101] "phreeqc" "Rdpack" "rtweet" "rwalkr" # [105] "bib2df" "ezsummary" "tidyjson" "reshape" # [109] "rollmatch" "huxtable" "flexsurv" "ggpmisc" # [113] "sjlabelled" "forestmodel" "IMFData" "merTools" # [117] "sjmisc" "ARTP2" "rprime" "zenplots" # [121] "grImport" "Hmisc" "magclass" "breathteststan" # [125] "ezknitr" "googleVis" "knitr" "statquotes" # [129] "survutils" "TableToLongForm" "treemapify" "anchors" # [133] "bayesSurv" "bigpca" "ccafs" "decompr" # [137] "dmm" "DoE.base" "electoral" "EML" # [141] "epiDisplay" "furniture" "gdata" "ggedit" # [145] "IBDhaploRtools" "icd9" "margins" "mason" # [149] "modelr" "mregions" "msm" "mvbutils" # [153] "pivottabler" "pkggraph" "poppr" "PtProcess" # [157] "purrr" "purrrlyr" "qdapRegex" "r4ss" # [161] "radiant.multivariate" "rcoreoa" "rcv" "represtools" # [165] "rfishbase" "rjstat" "Rmosek" "rtable" # [169] "spex" "SurvRegCensCov" "tidyselect" "traitr" # [173] "twilio" "ukbtools" "usethis" "yaml"
え、本当にこんなにあるの…?