如何列出未包含在任何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群组:)为不同的包建议潜在的任务视图。