同じ愚を繰り返さないために何度Rを繰り返せばいいのかをRによって知りたい
ちょっとした猫に関するパッケージを作りたくて、猫っぽいパッケージ名というとあれです、purrr
がありますよね(猫が喉を鳴らす時の音?らしいです)。安易安直な私は、じゃあpurrrrにしようかな、と思うわけですが、待てよ、と。パッケージ名が似ていることが引き起こした痛ましい事件がふと脳裏を過ります。
http://mockquant.blogspot.jp/2015/08/new-package-dplyrr-utilities-for.html
あれからもう1年経つんですね。dplyrr...あいつはいい奴だった。
同じ愚を繰り返さないために、r
を何度繰り返せばかぶる危険のないパッケージ名になるか調べてみましょう。
具体的には、「pu+(任意の回数繰り返されるr)」という単語をグーグル検索にかけて、ヒットする件数でマイナーさを判定したい。Google検索にはもちろんAPIもありますが、そんなに数が多いものでもないのでスクレイピングでやってみます。URLはhttps://google.com/search?q=キーワード
、検索結果のDOM要素のIDは#resultStats
です。こんな感じの関数をつくります。
library(httr) library(rvest) f <-function(num) { if(!purrr::is_scalar_numeric(num)) { stop("num must be a scalar numeric") } res <- GET("https://google.com/search", query = list( q = sprintf('"pu%s"', str_dup('r', num)) ) ) stop_for_status(res) content(res) %>% html_node("#resultStats") %>% html_text() %>% data.frame(raw = ., parsed = readr::parse_number(.)) }
これを1から30まで(つまりpur
からpurrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
まで)調べてみます。
d <- purrr::map_df(1:30, f, .id = "r_count") knitr::kable(d)
r_count | raw | parsed |
---|---|---|
1 | 約 187,000,000 件 | 1.87e+08 |
2 | 約 11,300,000 件 | 1.13e+07 |
3 | 約 1,150,000 件 | 1.15e+06 |
4 | 約 393,000 件 | 3.93e+05 |
5 | 約 174,000 件 | 1.74e+05 |
6 | 約 156,000 件 | 1.56e+05 |
7 | 約 55,100 件 | 5.51e+04 |
8 | 約 38,900 件 | 3.89e+04 |
9 | 約 23,500 件 | 2.35e+04 |
10 | 約 46,600 件 | 4.66e+04 |
11 | 約 11,600 件 | 1.16e+04 |
12 | 約 17,800 件 | 1.78e+04 |
13 | 約 5,570 件 | 5.57e+03 |
14 | 約 32,600 件 | 3.26e+04 |
15 | 約 4,600 件 | 4.60e+03 |
16 | 約 2,100 件 | 2.10e+03 |
17 | 約 5,910 件 | 5.91e+03 |
18 | 約 1,740 件 | 1.74e+03 |
19 | 約 989 件 | 9.89e+02 |
20 | 約 1,180 件 | 1.18e+03 |
21 | 約 1,100 件 | 1.10e+03 |
22 | 約 720 件 | 7.20e+02 |
23 | 約 981 件 | 9.81e+02 |
24 | 約 532 件 | 5.32e+02 |
25 | 約 2,330 件 | 2.33e+03 |
26 | 約 1,960 件 | 1.96e+03 |
27 | 約 4,460 件 | 4.46e+03 |
28 | 約 2,020 件 | 2.02e+03 |
29 | 約 1,180 件 | 1.18e+03 |
30 | 約 4,440 件 | 4.44e+03 |
これは…よく分かりませんが24回がいちばん少ないのでこれを採用します。次回、purrrrrrrrrrrrrrrrrrrrrrrr
パッケージとは何かがついに明らかになります(いや、purrr
とは何の関係もないんですけど)。備えよう。