如何判断 Github 存储库是否是 R 包



我的目标是创建一个R函数(或一组R函数)来搜索Github(可能通过搜索API或其他方式),以识别Github上可用的R包。这将模仿 R 的available.packages()功能,但适用于 CRAN 上的软件包的开发版本(不是)。

我认为这很容易。似乎不是。

可以从搜索使用语言 R 的所有存储库开始。结果是大约 8,199 个存储库。但其中许多不是 R 包,而是书籍、课程或只是杂项。我希望能够将搜索结果输入devtools::install_github函数中,这显然会在实际上不是包的东西上惨遭失败。

那么,有没有办法确定 Github 存储库是否是 R 包?我的直觉是能够通过包裹的显着特征来识别包裹:

  • /R 和/man 目录
  • 描述文件
  • 命名空间文件
  • 别人?

但是我不知道该怎么做。显然,可以下载每个存储库(就像devtools::install_github一样,然后检查它是否是一个包,但这似乎太多了)。

有什么见解吗?(我不一定在这里寻找完整的解决方案。

你可以解析存储库的 github 页面。

所需要的只是一个您喜欢的语言的解析库。我从来没有在R中做过(通常,我使用Python),但我想你会发现一些东西。如果用于解析的 R 工具不够方便,您可以使用另一种语言来分析数据,并使用 R 来处理它。

如何解析。

您的搜索请求的网址是

https://github.com/search?p=1&q=language%3AR&ref=simplesearch&type=Repositories

然后查看分页块。

<span class="disabled prev_page">◀</span> 
<span class="current">1</span> 
<a href="/search?p=2&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories" rel="next">2</a> 
<a href="/search?p=3&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">3</a> 
<a href="/search?p=4&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">4</a> 
<a href="/search?p=5&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">5</a> 
<a href="/search?p=6&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">6</a> 
<a href="/search?p=7&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">7</a> 
<a href="/search?p=8&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">8</a> 
<a href="/search?p=9&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">9</a> 
<span class="gap">&hellip;</span> 
<a href="/search?p=99&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">99</a> 
<a href="/search?p=100&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories">100</a> 
<a href="/search?p=2&amp;q=language%3AR&amp;ref=simplesearch&amp;type=Repositories" class="next_page" rel="next">▶</a></div>

您可以使用解析选择器在此处获取页码 (100)。然后,可以分析它们的所有存储库标题和链接。他们看起来像

<h3 class="repolist-name">
    <a href="/hadley/devtools" class="css-truncate css-truncate-target">hadley/devtools</a>
</h3>

使用 url 并将页面从 1 更改为最大值,您可以获取所有存储库和链接。然后看看回购页面。例如,我们正在寻找命名空间。

<td class="content">
    <span class="css-truncate css-truncate-target"><a href="/hadley/devtools/blob/master/NAMESPACE" class="js-directory-link" id="7347fe5a0f184f79ef064e92e3beb297-5343453e5cabfcbdea6f829e232c6f994af44719" title="NAMESPACE">NAMESPACE</a></span>
</td>

只需搜索css类"js-directory-link",您就可以找到很多东西。

最后要做的是做出某种逻辑来做出决定!

相关内容

最新更新