如何列出未包含在任何R任务视图中的包?

如何列出未包含在任何R任务视图中的包?,r,cran,R,Cran,我最近查看了很多,发现一些感兴趣的包没有包含在任何任务视图中。是否有确定的方法来查找任务视图中列出的包的补充 我意识到通过XML和处理ctv文件(例如),我可以找到节点中列出的所有包的联合,并且available.packages()可以列出所有可供下载的包。这就是诀窍,还是我在使用像或这样的网站时遗漏了一些诀窍 更新1(不要这样做-见下面我的答案):我忽略了提到CRAN在视图中列出了“包”。因此,似乎在幕后,一些信息一直在将包与它们所在的视图相匹配。你可以轻松(粗暴地)刮去所有的CRAN包页面

我最近查看了很多,发现一些感兴趣的包没有包含在任何任务视图中。是否有确定的方法来查找任务视图中列出的包的补充

我意识到通过
XML
和处理
ctv
文件(例如),我可以找到
节点中列出的所有包的联合,并且
available.packages()
可以列出所有可供下载的包。这就是诀窍,还是我在使用像或这样的网站时遗漏了一些诀窍

更新1(不要这样做-见下面我的答案):我忽略了提到CRAN在视图中列出了“包”。因此,似乎在幕后,一些信息一直在将包与它们所在的视图相匹配。你可以轻松(粗暴地)刮去所有的CRAN包页面和grep中的“In view:”。这是我最初的想法,直到我遇到了更优雅的ctv


更新2:我忽略了链接到。如果您进入任务视图,包文档会很有趣。

没有隐藏的技巧,只需重新创建一些类似蔓越莓的东西(首先调用
available.packages()
并将其与存储在本地数据库中的状态数据进行比较)

在您的情况下,您可能需要计算
可用的设置差异。packages()
为您提供的与任务视图选择相关的
ctv
包提供的设置差异

编辑1您的“更新1”想法很粗糙。太粗糙了。我认为,CRAN的元信息来源于元信息:第一组是所有包,每个任务视图的添加集,可能在“列出的”和“推荐的”之间划分,并聚合起来


编辑2我认为您只需要使用
ctv
中的代码来解析它的文件、输出集。我们在
cran2deb
中使用它来定义用于创建包的较小测试集。给定该集合(以及其他数据),他们可以生成网页。我想你可能把事情复杂化了。R使这成为可能,因为我也非常了解;-)

我应该更仔细地阅读
ctv
文档。答案就在那里:有一个名为
Views.rds的.rds文件。这里有一个逐步的方法:

myRepos         <- "http://cran.r-project.org"
tmpfile         <- tempfile()
download.file(paste(myRepos, "src/contrib/Views.rds", sep = "/"), destfile = tmpfile)

myViews         <- .readRDS(tmpfile)
func_listPkgs   <- function(x){return(x$packagelist$name)}
aggRaw          <- lapply(myViews, func_listPkgs)
aggInViews      <- unique(unlist(aggRaw))

availRaw        <- available.packages(contriburl = paste(myRepos, "src/contrib", sep = "/"))
availPkgs       <- rownames(availRaw)
notInViews      <- setdiff(availPkgs, aggInViews)

myRepos+1,你会知道的。:-)您知道“视图中”是如何设置的吗?如果我能解锁神奇的SQL查询,我想CRAN HQ的幕后会有一点魔力。你写编辑的速度比我提交评论的速度快。:)你从我这里得到了一个坚定的“是的:)奖励积分:有人可以利用这个集合并构建一个多类分类器,根据依赖项、建议、作者和关键字匹配(对于NLP群组:)为不同的包建议潜在的任务视图。