如何以编程方式查找R包的数量?

如何以编程方式查找R包的数量?,r,data-science,R,Data Science,CRAN提供的套餐数量每天都在变化。我试图通过以下R代码以编程方式计算包的数量: nrow(installed.packages()) 但是,此代码仅返回系统中当前安装的软件包数。如何计算所有包裹的数量 > nrow(available.packages()) [1] 13429 > Sys.Date() [1] "2018-11-29" 您可以在“请参阅已安装的”一节中找到可用的。软件包(和其他相关功能)。软件包您可以随时使用web抓取代码准确计算CRAN提供的软件包数量: l

CRAN提供的套餐数量每天都在变化。我试图通过以下R代码以编程方式计算包的数量:

nrow(installed.packages())
但是,此代码仅返回系统中当前安装的软件包数。如何计算所有包裹的数量

> nrow(available.packages())
[1] 13429
> Sys.Date()
[1] "2018-11-29"

您可以在“请参阅已安装的
”一节中找到可用的
。软件包
(和其他相关功能)。软件包

您可以随时使用web抓取代码准确计算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()))
库(rvest)
包装%
xml_text()
nb_包装(5))
打印(粘贴(“有”,nb_包装,“自”,Sys.Date()起,CRAN中提供的软件包”)

谢谢@Servet!它显示了13515包和您的代码,我体验了我的“nrow(installed.packages())”代码13477。我还有一个问题,你知道有没有基于云的环境可以测试上面的代码,因为我无法访问安装了R的机器。我尝试了一些环境,但他们为免费用户提供的时间非常有限,比如每8天1小时。这个答案很聪明,但没有经过很好的审查。例如,当我运行代码时,计数的第一个“包”是这一行,
\n\n
,第560个包是
\n\n
,即不是包。另外,默认情况下,
available.packages()
会执行一些重复数据消除-有关详细信息,请参阅帮助页面。因此,我假设这两种方法之间的38个包的区别是26个字母标题和12个重复的
available.packages()
removes.@Gregor Nice remark。我更新了我的代码,以从最终计数中消除您提到的这些空行。对于副本,最终用户是否需要它们是一个选择问题。我的代码给出了整个画面,并且是一个web抓取练习。@HakanYüce您可以在云中运行上面的代码。这是一个免费软件即服务,预装了rvest软件包。您不必安装或下载任何软件。还有一家提供免费、不间断服务的公司。