簡體   English   中英

如何判斷Github存儲庫是否為R包

[英]How to tell if a Github repository is an R package

我的目標是創建一個R函數(或一組R函數)以搜索Github(可能通過search API或其他方式),以標識Github上可用的R包。 這將模仿R的available.packages()功能,但用於CRAN上的軟件包的開發版本(非)。

我認為這很容易。 看來不是。

首先可以搜索所有使用語言R 存儲庫。 結果是大約8,199個存儲庫。 但是其中許多不是R包,而是書籍,課程或僅僅是雜項。 我希望能夠將搜索結果提供給devtools::install_github函數,這顯然會在實際上不是軟件包的事情上慘敗。

那么,有什么方法可以確定Github存儲庫是否為R包? 我的直覺是能夠通過其區別特征來識別軟件包:

  • / R和/ man目錄
  • 說明文件
  • NAMESPACE文件
  • 其他?

但是我不知道該怎么做。 顯然,可以下載每個存儲庫(就像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更改為最大,可以獲取所有存儲庫和鏈接。 然后看回購頁面。 例如,我們正在尋找NAMESPACE。

<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”,您就會發現很多東西。

最后要做的是制定某種邏輯來做出決定!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM