23 网络分析
23.1 R 语言社区规模
从 CRAN 上的 R 包及其开发者数量来看看目前 R 语言社区规模。
截止 2022-12-31 CRAN 上发布的 R 包有 18976 个,CRAN 进入年末维护期 2022-12-22 至 2023-01-05。
距离上次更新的时间分布,有的包是一周内更新的,也有的是 10 多年未更新的。
根据发布日期 Published 构造新的一列 — 发布年份。
然后按年统计更新的 R 包数量,如 图 23.1 所示,过去 1 年内更新的 R 包有 8112 个(包含新出现的 R 包),占总数 8112 / 18976 = 42.75%,过去 2 年内更新的 R 包有 11553 个,占总数 11553 / 18976 = 60.88%,这个占比越高说明社区开发者越活跃。还可以换个说法,以 2020 年为例,总数 18976 个 R 包当中有 2470 个 R 包的更新日期停留在 2020 年,占比 2470 / 18976 = 13.02%。
library(ggplot2)
aggregate(data = pdb,Package ~ published_year, FUN = length) |>
ggplot(aes(x = published_year, y = Package)) +
geom_col(fill = NA, color = "gray20") +
theme_classic() +
coord_cartesian(expand = F) +
labs(x = "年份", y = "R 包数量")
截止 2022-12-31,CRAN 上 R 包的维护者有 10049 人,其中有多少人在 2022 年更新了自己的 R 包呢?有 4820 个维护者,占比 47.96%,也就是说 2022 年,有 4820 个开发者更新了 8112 个 R 包,人均更新 1.68 个 R 包,下 图 23.2 按 R 包发布年份统计开发者数量。
# 清理维护者字段,同一个开发者可能有多个邮箱
pdb$Maintainer2 <- sub(pattern = "<.*?>", replacement = "", x = pdb$Maintainer)
pdb$Maintainer2 <- trimws(pdb$Maintainer2, which = "both", whitespace = "[ \t\r\n]")
pdb$Maintainer2 <- tolower(pdb$Maintainer2)
# 维护者总数
# length(unique(pdb$Maintainer2))
aggregate(
data = pdb, Maintainer2 ~ published_year,
FUN = function(x) {
length(unique(x))
}
) |>
ggplot(aes(x = published_year, y = Maintainer2)) +
geom_col(fill = NA, color = "gray20") +
theme_classic() +
coord_cartesian(expand = F) +
labs(x = "年份", y = "开发者数量")