找到你最需要的最棒的 R 包
楚新元 / 2023-10-11
寻找满足需求的 R 包
比如我现在需要一个能读取 Excel 文件的 R 包,你可以用 pkgsearch 包帮你搜索一下,比如用关键词 “read excel” 来搜:
library(pkgsearch)
pkg = ps("read excel", size = 20)
DT::datatable(pkg[c(1:2, 4)])
你可以用 View(pkg)
获得更多的信息。
哪一个包最棒?
能满足需求的包可能不止一个,我该选哪一个呢?或许下载量指标是个不错的指标。需要说明的是下载量最大的包不一定就是最棒的包,因为新包由于知名度较低,可能下载量比较低,但是对于老包,这个指标还是很有代表性的。另外下载量最大的包在具体某个功能点上未必就是最好的。
我对包更挑剔点,在能满足要求的前提下,我更喜欢轻量级的包。如果是写 R 包你会发现尽量用 base R 自带的函数更好。
统计相关包的下载量
# 获取 RStudio CRAN mirror 上的下载量数据
library(cranlogs)
cran_dl = cran_downloads(
packages = c(
"readxl",
"xlsx",
"openxlsx",
"XLConnect"
),
from = "2023-01-01",
to = "2023-09-30"
)
# 按照包、年、月汇总统计数据
library(dplyr)
cran_dl %>%
mutate(
year = format(date, '%Y'),
month = format(date, '%m')
) %>%
group_by(package, year, month) %>%
summarise(
total = sum(count),
.groups = "drop"
) -> dl_stat
下载量走势图更直观
library(ggplot2)
dl_stat %>%
ggplot(
mapping = aes(
x = paste0(year, month),
y = total,
color = package,
group = package
)
) +
geom_point() +
geom_line() +
xlab("") + ylab("") +
theme(legend.position = "bottom")
一图胜千言,不可否认:仅仅只是读取 Excel 文件,readxl 包确实是目前最棒的包,支持 .xlsx 和 .xls 两种格式,它的底层是基于 C 和 C++,读取速度也非常快。
如果除了读取外,还有其他需求,比如定制个性化的报表,那么 openxlsx2 和 openxlsx 包就非常值得深入学习了。
如果要读取复杂的 Excel 表格数据,比如通过数据透视表生成的数据1,那么 tidyxl 包就很有必要了。
-
知乎上张敬信老师写了一篇文章《tidyxl包:复杂Excel表格数据读取(逆透视)》供参考。 ↩︎