19

私は知りたがっています、

  • CRAN で 2、3、N 文字のパッケージ名はいくつありますか?
  • まだ使用されていない組み合わせ ("unpoppler")
  • フルキャップまたはキャメルケースを使用するパッケージ名はいくつありますか?
  • 2 で終わるパッケージ名はいくつありますか?

興味深い事実が明らかになる可能性があると思います。

編集: CRAN パッケージの時間的進化を示すアニメーション グラフィックのボーナス ポイント。

4

4 に答える 4

14

パッケージの名前を取得するために Web ページをスクレイピングするよりも優れた方法は、available.packages()関数を使用してそれらの結果を処理することです。available.packages()利用可能なすべてのパッケージの詳細を含むマトリックスを返します (ただし、デフォルトでフィルター処理されます。詳細については、の詳細セクションを参照してください?available.packages)。

pkgs <- available.packages(filters = "duplicates")
nameCount <- unname(nchar(pkgs[, "Package"]))
table(nameCount)

> table(nameCount)
nameCount
  2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21 
 32 311 374 360 434 445 368 277 199 132  99  56  56  43  22  19  18   2  12   8 
 22  24  25  31 
  5   2   1   1

を使用nameCountすると、正規表現などに頼る必要なく、任意の数の文字を含む名前のパッケージを選択できます。

> unname(pkgs[which(nameCount == 2), "Package"])
 [1] "BB" "bs" "ca" "cg" "dr" "ez" "FD" "ff" "HH" "HI" "iv" "JM" "ks" "M3" "mi"
[16] "np" "oc" "oz" "PK" "PP" "qp" "QT" "RC" "rv" "Rz" "sm" "sn" "sp" "st" "SV"
[31] "tm" "wq"
于 2011-09-12T09:45:15.337 に答える
10

ここでは、さまざまな提案に基づいた 1 つのショットを示します。

 packages <- available.packages()[,'Package']

 ggplot(data.frame(n = nchar(packages))) +
   geom_histogram(aes(n), binwidth=1)     

ヒストグラム

 all <- length(packages)
 ## 3168
 up <- sum(toupper(packages) == packages)
 ## 262
 low <- sum(tolower(packages) == packages)
 ## 1697
 pie(c(up, low, all-up-low), labels=c("UPPERCASE","lowercase","cAmElCaSe"))

パイ

 let <- sapply(sapply(letters, grep, tolower(packages)), length)
 barplot(let)

バープロット

 length(packages[grep("2$", packages, perl=TRUE)])
 # 29
于 2011-09-12T09:45:52.573 に答える
5

以下は、いくつかの質問に答える短いコードです。時間を見つけたら、回答に追加し続けます。

library(XML); library(ggplot2);

url = 'http://cran.r-project.org/web/packages/available_packages_by_name.html'
packages = readHTMLTable(url, stringsAsFactors = F)[[1]][-1,]

# histogram of number of characters in package name
qplot(nchar(V1), data = packages)
于 2011-09-11T23:43:21.970 に答える
1

を使用してすべてのパッケージのベクトルを作成します

myList <- available.packages()[,'Package']

その後、必要に応じて分析できます。たとえば、名前が 2 文字だけのパッケージのリスト

myList[grep('^..$', myList)]
于 2011-09-12T09:05:46.310 に答える