每天CRAN提供的软件包数量都在变化。我试图使用以下R代码以编程方式计算软件包的数量:
nrow(installed.packages())
然而,这段代码只返回系统中当前安装的软件包数量。我该如何计算所有软件包的数量?
nrow(installed.packages())
然而,这段代码只返回系统中当前安装的软件包数量。我该如何计算所有软件包的数量?
> nrow(available.packages())
[1] 13429
> Sys.Date()
[1] "2018-11-29"
您可以在?installed.packages
的参见部分找到有关available.packages
(以及其他相关函数)的信息。
您可以使用网络爬虫代码准确计算CRAN随时提供的软件包数量:
library(rvest)
pkgs <- read_html("https://cran.r-project.org/web/packages/available_packages_by_name.html")
mylines <- pkgs %>%
html_nodes("tr") %>%
xml_text()
nb_pkgs <- length(which(sapply(mylines, nchar)>5))
print(paste("There are", nb_pkgs, "packages available in CRAN as of", Sys.Date()))
<tr id="available-packages-A">\n<td></td> </tr>\n
,而第560个package是<tr id="available-packages-B">\n<td></td> </tr>\n
,即不是packages。此外,默认情况下,available.packages()
会进行一些去重处理-请参阅帮助页面以获取详细信息。因此,我认为您在这两种方法之间看到的38个包的差异是26个字母标题和12个available.packages()
删除的重复项。 - Gregor Thomas